[英]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.