gpt4 book ai didi

比较两个文件c代码

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:27 25 4
gpt4 key购买 nike

我需要逐行比较两个文件。其中一个文件在行尾有一个类似 ^M 的字符。我想在比较时排除它。我还需要找到匹配的行数。这是我的代码。如何添加 ^M 以及在何处增加线的轮廓?

int compareFile(FILE* file_compared, FILE* file_checked)
{
bool diff = 0;
int N = 65536;
char* b1 = (char*) calloc (1, N+1);
char* b2 = (char*) calloc (1, N+1);
size_t s1, s2;

do {
s1 = fread(b1, 1, N, file_compared);
s2 = fread(b2, 1, N, file_checked);

if (s1 != s2 || memcmp(b1, b2, s1)) {
diff = 1;
break;
}
} while (!feof(file_compared) || !feof(file_checked));

free(b1);
free(b2);

if (diff) return 0;
else return 1;
}

void main(int argc, char *argv[] )
{
FILE *fpread, *fpread2;
char filebuff[MAXLINE];
char filebuff2[MAXLINE];
int var = 0;
int linecount = 0;
printf ("COMPARE RESULT %d \n",compareFile("file1","file2"));

最佳答案

您看到的^M 实际上是回车符(ASCII 13,C 语法\r)。比较文本文件时,最好不要关心使用的行终止模式,因为有几种(Unix、Windows 和 Mac 各有各的)。

您可能应该将输入分成几行,忽略使用的确切行终止符,然后比较

UPDATE 编写一个函数,一次读取一个字符,当它到达任何有效的行终止序列时停止,并确保随着行的增长动态分配内存。

关于比较两个文件c代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com