#include <stdio.h>
#include <string.h>
int main()
{
FILE *pInFile;
pInFile = fopen("fileName.txt", "r");
char line[200];
while (fgets(line, sizeof(line), pInFile)) {
printf("\n%s", line);
if (strcmp(line, "C")==1)
printf("Success");
}
return 0;
}
因此程序的目标是在每次读取行后打印“成功”,在这种情况下为“C”。例如,我的文本文件看起来像这样
C
C
C
C
我希望它打印
C
Success
C
Success
C
Success
C
Success
但是,出于某种原因只打印此
C
Success
C
Success
C
Success
C
并且遗漏了最后的“成功”。我完全不知道为什么这样做。
答案 0 :(得分:3)
strcmp()
将返回0。
尝试使用strcmp()
将条件更改为:
if (line[0] == 'C') {
printf("Success");
}
解释为什么要获得您发布的输出:
第一行的fgets将以下内容转换为line
:
C\n
所以当你strcmp(line, "C") == 1
成功时,strcmp()
会返回&gt; 0如果第二个参数&gt;第一个论点。
对于除最后一行之外的所有行都会发生这种情况。
因此,在最后一行strcmp()
返回0,因为字符串相等而您不打印成功
要解决这个问题,要么做Gangadhar在他的帖子中建议的内容,要么是我在上面所展示的内容。
答案 1 :(得分:1)
当字符串相等时,strcmp()
的返回值为0
答案 2 :(得分:1)
您可以使用strncmp()
并比较1个字符
if (strncmp(line, "C" ,1)==0)
printf("Success");