c - STDIN 重定向 : how to make program end once fgets() reads an expected ending line

标签 c arrays fgets io-redirection

好的,我有一个读取文件行的​​程序。然而,一旦到达终点线
*** 结束***
这是为了看到这一点
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/

相关文章:

c - libcurl easy handle 'CURLOPT_RANGE' 选项不起作用

iphone - long long 到字节数组

c - 什么是 LLVM,为什么突然间如此流行?

python - 跨多个轴的点积

c - 在 c shell 中使用 execvp 出现段错误

c - 如何从文本文件中读取格式化行并将信息保存在链表中? IN C

c++ - 重新审视在 C++ 中包含 C 头文件

php - 通过重定向 PHP 发送数组

php - PHP中预算范围的数组排序

c - 从 stdin 读取未知长度的未知行数