读书人

求解释啊解决方案

发布时间: 2012-02-29 16:44:10 作者: rapoo

求解释啊

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;

读书人网 >C语言

热点推荐