好的,我有一个读取文件行的程序。然而,一旦到达终点线
*** 结束***
这是为了看到这一点
char str[100];
while(fgets(str,100,stdin) != NULL && strcmp(str,"*** END ***"))
while 循环应该停止,因为 strcmp 将等于 0,从而使 while 循环为 false。
然而事实并非如此。我认为这是因为 str
的字符数量与 "*** END ***"不同(我假设复制行后的其余部分里面没有任何内容?)
。如何修复我的程序,使其在读取该行后结束?谢谢。
好的,所以我现在知道这是因为在我的示例文本中,我在那一行之后有一行。删除后就可以正常使用了。但是无论后面是否有一行,我怎样才能让它结束呢?
最佳答案
你可以使用
char * strstr ( const char *, const char * )
指向 str2 中指定的整个字符序列在 str1 中第一次出现的指针,如果该序列不存在于 str1 中,则为空指针。
关于c - STDIN 重定向 : how to make program end once fgets() reads an expected ending line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22281848/