求解释啊
- C/C++ code
#define MAX 201int main(void){ FILE *fp; char str[MAX]; char ch[15]; puts("输入一个字符串:"); gets(ch); if ( ( fp=fopen("file.txt","r") ) == NULL ) { printf("Can't open %s","file.txt"); exit(1); } while (fgets(str,MAX,fp) != NULL) { if (strstr(str, ch) != NULL) { printf(str); } } return 0;}假设file.txt内容是:
fdssd sdfsdf dsfsdf
fdsyu zeng yuan dsfsdff
sdfghj
fdggfdgdrg
y k
输入的字符串内容是:
zeng
我的问题是为什么会显示fdsyu zeng yuan dsfsdff,请大家详细给我解释一下那个while循环。
[解决办法]
while (fgets(str,MAX,fp) != NULL) //读取文件中的内容到str
{
if (strstr(str, ch) != NULL) //查找包含ch子串的字符串
{
printf(str); //输出的是读取到的文件的内容,而不是上一步查到的包含ch子串的字符串
}
}
[解决办法]
?///?///???????
[解决办法]
- C/C++ code
while (fgets(str,MAX,fp) != NULL) //读取文件中的内容到str { if (strstr(str, ch) != NULL) //查找包含ch子串的字符串,这里返回的是匹配到子串的地址 { printf(str); //输出的是读取到的文件的内容,若是想输出匹配的子串,取上面的返回值输出。 } }
[解决办法]
gets(ch);
应改为
fgets(ch,15,stdin);
if ('\n'==ch[strlen(ch)-1]) ch[strlen(ch)-1]=0;