strcmp()表示文件中的行

时间:2013-11-23 18:52:06

标签: c string fgets strcmp arrays

所以我试图比较文件中的一行是否符合我的预期,但即使我打印到控制台文件的第一行和我期望的内容,他们看起来完全一样,他们没有通过我的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
)

1 个答案:

答案 0 :(得分:1)

根据您的输出,actualCharArray以换行符('\n')结尾,而expectedCharArray则没有;因此,strcmp认为它们不相等。