所以我试图比较文件中的一行是否是我所期望的,但即使当我打印以控制台文件的第一行和我所期望的并且它们看起来完全相同时,它们也没有通过我的 strcmp 测试。这是我测试文件第一行的方法以及我所期望的:
char currentLine[MAXIMUM_LINE_LENGTH + 1]; // + 1 for terminating char
fgets(currentLine, MAXIMUM_LINE_LENGTH, inputFile);
assertCharArrayEquals(currentLine, "00000010000100011001000000100000\n");
我的方法assertCharArrayEquals看起来像:
void assertCharArrayEquals(char *actualCharArray, char *expectedCharArray) {
if (strcmp(actualCharArray, expectedCharArray) == 0) {
printf("PASS: assertCharArrayEquals(%s, %s)\n", actualCharArray, expectedCharArray);
} else {
printf(">>>>>>>FAIL: assertCharArrayEquals(%s, %s)\n", actualCharArray, expectedCharArray);
}
}
我的控制台输出如下所示:
>>>>>>>FAIL: assertCharArrayEquals(00000010000100011001000000100000
, 00000010000100011001000000100000
)
最佳答案
根据您的输出,actualCharArray
以换行符 ('\n'
) 结尾,而 expectedCharArray
则不然;因此,strcmp
不认为它们相等。
关于c - strcmp() 用于文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166418/