比较两个文件的c代码
我需要逐行比较两个文件。其中一个文件在行尾有一个类似^M的字符。我想在比较时排除这一点。我还需要找到匹配的行数。这是我的密码。如何添加该^M以及在何处增加行contor比较两个文件的c代码,c,file-io,compare,C,File Io,Compare,我需要逐行比较两个文件。其中一个文件在行尾有一个类似^M的字符。我想在比较时排除这一点。我还需要找到匹配的行数。这是我的密码。如何添加该^M以及在何处增加行contor int compareFile(FILE* file_compared, FILE* file_checked) { bool diff = 0; int N = 65536; char* b1 = (char*) calloc (1, N+1); char* b2 = (char*) callo
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各有自己的模式)
您可能应该将输入拆分为行,忽略使用的确切行终止,然后比较行
更新编写一个函数,每次读取一个字符,当到达任何有效的行终止序列时停止,并确保在行增长时动态分配内存。您看到的
^M
实际上是回车符(ASCII 13,C语法\r
)。在比较文本文件时,最好不要在意使用的行终止模式,因为有几种模式(Unix、Windows和Mac各有自己的模式)
您可能应该将输入拆分为行,忽略使用的确切行终止,然后比较行
更新编写一个函数,每次读取一个字符,当到达任何有效的行终止序列时停止,并确保在行增长时动态分配内存。首先:
int diff = 0;
递增计数器:
if (s1 != s2 || memcmp(b1, b2, s1)) {
++diff;
}
最后,我要说的是:
return diff;
您的职能还应包括:
int compareFile(char* fc_name,char* fk_name){
/* Variable Declarations */
FILE *file_compared = fopen(fc_name,"r");
FILE *file_checked = fopen(fk_name,"r");
if(file_compared == NULL || file_checked == NULL)
return -1;
/* .... */
}
首先:
int diff = 0;
递增计数器:
if (s1 != s2 || memcmp(b1, b2, s1)) {
++diff;
}
最后,我要说的是:
return diff;
您的职能还应包括:
int compareFile(char* fc_name,char* fk_name){
/* Variable Declarations */
FILE *file_compared = fopen(fc_name,"r");
FILE *file_checked = fopen(fk_name,"r");
if(file_compared == NULL || file_checked == NULL)
return -1;
/* .... */
}
您的函数将收到您昨天在此处询问的文件名或文件*??的精确副本。您的函数将收到您昨天在此处询问的文件名或文件*??的精确副本。如何操作?你能举个例子吗?我不知道怎么解决这个问题。谢谢你怎么做?你能举个例子吗?我不知道怎么解决这个问题。非常感谢。