繁体   English   中英

STDIN重定向:一旦fgets()读取预期的结束行,如何使程序结束

[英]STDIN redirection: how to make program end once fgets() reads an expected ending line

好的,所以我有一个读取文件行的​​程序。 但是一旦到达终点
*** END ***
就是要看到
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中不存在该序列,则为空指针。

我认为您的输入以行尾( \\n )字符终止。 fgets也将其包含在字符串中。

请尝试使用strcmp(str,"*** END ***\\n")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM