我想在文本文件中搜索文本字。但是,代码不执行isnide while循环。 fgets定义有什么问题?我该怎么解决?程序总是打印“在msg之外”
char repeated_data [10] = "0123456789";
char temp[512];
FILE * fp5 = fopen("/home/eagle/Desktop/temp.txt","r");
if(fp5 == NULL)
{
perror("temp_network.txt open failed");
exit(EXIT_FAILURE);
}
//search the text inside the temp.txt
while(fgets(temp, 512, fp5) != NULL)
{
printf("while msg\n");
if((strstr(temp, repeated_data)) != NULL)
{
discard_message=1;
printf("msg is discarded msg\n");
}
printf("inside of while\n");
}
fclose(fp5);
printf("outside of while msg\n");
答案 0 :(得分:4)
流程似乎是正确的,你仍然可以做的就是检查feof和ferror,如documented here:
如果发生错误,则返回空指针。使用ferror或 无法检查是否发生了错误或文件结束 达到。
作为旁注,这是:
char repeated_data [10] = "0123456789";
应该是
char repeated_data [] = "0123456789";
或
char repeated_data [11] = "0123456789";
你忘记了空终止符。