int i, j, n = 0; LNode* p = L; ElemType e; char name[20]; //模糊查找的字符串 printf("请输入你要查找的关键字:"); getchar(); gets(name); char Listname[20]; //接收链表中的名字 while (p) { e = (p->next)->data; strcpy(Listname, e.publisher); for (i = 0; i < strlen(Listname); i += 2) { for (j = 0; j < strlen(name); j += 2) { if (Listname[i] == name[j] && Listname[i + 1] == name[j + 1]) { n++; } } } if (n == strlen(name) / 2) { printf("%s %d\n", e.name, e.num); } n = 0; p = p->next; }
时间: 2024-01-17 20:05:04 浏览: 26
这段代码中有一个语法错误,即使用了不安全的gets()函数,这个函数无法检查输入是否超过数组长度,容易导致缓冲区溢出。建议使用安全的fgets()函数替代。修改后的代码如下:
```c
int i, j, n = 0;
LNode* p = L;
ElemType e;
char name[20]; // 模糊查找的字符串
char Listname[20]; // 接收链表中的名字
printf("请输入你要查找的关键字:");
fgets(name, 20, stdin); // 使用安全的fgets()函数读入关键字
while (p) {
e = (p->next)->data;
strcpy(Listname, e.publisher);
for (i = 0; i < strlen(Listname); i += 2) {
for (j = 0; j < strlen(name); j += 2) {
if (Listname[i] == name[j] && Listname[i + 1] == name[j + 1]) {
n++;
}
}
}
if (n == strlen(name) / 2) {
printf("%s %d\n", e.name, e.num);
}
n = 0;
p = p->next;
}
```
另外,如果关键字的长度超过了20个字符,fgets()函数只会读取前20个字符,可以根据实际需求调整输入缓冲区的大小。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)