【发布时间】:2016-01-21 02:09:56
【问题描述】:
我有一个如下所示的文本文件:
TEMP:88
TT:33
3d;3d:5
我试图只解析第一行,并检查它确实是“TEMP:88”
这是我尝试过的:
FILE * file = fopen("test.txt","r");
if(file == NULL)
exit(0);
char buff[128];
while(fgets(buff,sizeof(buff),file) != NULL) {
if(strcmp(buff,"TEMP:88") == 0)
printf("TRUE");
else
printf("FALSE"); //prints false, regardless of newline character, use of memcopy or anything else
break;
}
然后我尝试在strcmp中添加换行符“\n”,结果相同,mem copy也产生了相同的结果,有什么想法吗?
【问题讨论】:
-
尝试打印buff的内容(最好打印ascii码)
-
打印正确的字符串“TEMP:88”
-
\n应该被包括在内;考虑到这一点,比较在这里按预期工作:ideone.com/WY3OHM -
如果在字符串中包含换行符没有修复它,可能是行尾有空格。
-
或者根据您使用的系统类型,您的文件是否实际上包含
TEMP:88\r\n,带有回车符和换行符?我赞同@BryanChen 的建议,打印出字符的数值。