c - strcmp() 用于文件中的行

标签 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
)

最佳答案

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

关于c - strcmp() 用于文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166418/

相关文章:

c - 越界数组和段错误

c++ - 在一次操作中进行多个矩阵-矩阵乘法

c - 如何让用户在 C 中回家(平台无关的方式)?

string - PySerial 和 readline() 返回二进制字符串 - 转换为常规字母数字字符串?

c - 如何读取文件直到C中的一个字符

C 无法以 txt 模式从 FILE 初始化列表

c++ - 为什么 opencv 发现轮廓的边界点是无序的和未完成的?

c++ - 是否有 C++ 函数来检查字符串之间的相似性?

javascript - 从 Javascript 中的字符串替换多个字符实例

c - 程序收到信号 : “EXC_BAD_ACCESS” ?