【发布时间】:2015-04-01 18:05:01
【问题描述】:
我遇到了一个问题,使用 getline 时,我无法使用 strcmp() 在文件中找到特定单词。
我的文件看起来像这样:
Word1
Word2
Word3
section1
Word4
这是我现在的代码:
while(found == 0)
{
getline(&input, &len, *stream);
if (feof(*stream))
break;
if(strcmp(input, "section1\n") == 0)
{
printf("End of section\n");
found = 1;
}
}
strcmp() 永远不会返回 0。任何见解将不胜感激!
对代码进行了编辑。我转错了。
来自 cmets 的解决方案: 我需要将 \r 添加到正在比较的字符串中
if(strcmp(input, "section1\r\n") == 0)
【问题讨论】:
-
BLUEPIXY 提到的还有,您是在 Windows 上执行此操作(换行符是 \r\n)吗?
-
您的文件是否使用
\r\n结尾?此外,您的if表达式中缺少括号,因此不应编译... -
@iharob 因为他想在找到该行时跳出,而不是处理文件的其余部分,大概
-
什么是
stream?如果是FILE* stream;,那么getline/feof的参数不应该是*stream,而应该是stream。 -
请发布这个甚至无法编译的真实代码。