比较不同文件的功能
Function to compare different files
我编写了一个函数来比较两个不同的文件并打印它们是否相等。问题是文件是相同的,并且在某些时候它 returns 作为失败。
这是我的功能:
void comparar_conteudo(){
for(int i = 1; i <= 10; i++){
int bp = 0;
char ficheiro1[100] = "saida/command";
char ficheiro2[100] = "expected/exp_query";
char commandString[2]; sprintf(commandString, "%d", i);
strcat(ficheiro1, commandString); strcat(ficheiro2, commandString);
strcat(ficheiro1, "_output.txt"); strcat(ficheiro2, ".txt");
FILE *novoFile1 = fopen(ficheiro1, "r");
FILE *novoFile2 = fopen(ficheiro2, "r");
char* line1 = malloc(sizeof(char));
char* line2 = malloc(sizeof(char));
while(fgets(line1, 1024, novoFile1)){
fgets(line2, 1024, novoFile2);
if(strcmp(line2,line1) != 0){
bp = 1;
break;
}
}
if(bp == 0)
printf("Query %d: SUCCESS\n", i);
else
printf("Query %d: FAILED\n", i);
fclose(novoFile1);
fclose(novoFile2);
free(line1);
free(line2);
}
}
输出如下所示:
Query 1: SUCCESS
Query 2: SUCCESS
Query 3: SUCCESS
Query 4: SUCCESS
Query 5: FAILURE
double free or corruption (out)
Aborted (core dumped)
我找不到问题,如果你能帮助我,我将不胜感激!
编辑:
如果我要求打印两行都有的内容 returns 像这样:
Query 1: SUCCESS
Query 2: SUCCESS
Query 3: SUCCESS
Query 4: SUCCESS
13108172;LeonardoCoelho71950;29
13108172;LeonardoCoelho71950;29
13108172;LeonardoCoelho71950;29
Query 5: FAILED
double free or corruption (out)
Aborted (core dumped)
一旦你这样做了
char* line1 = malloc(sizeof(char));
char* line2 = malloc(sizeof(char));
while(fgets(line1, 1024, novoFile1)){
所有赌注都取消了
您将 line1
分配为一个字节,然后将 1024 个字节读入其中。至少
char* line1 = malloc(1024);
char* line2 = malloc(1024);
我编写了一个函数来比较两个不同的文件并打印它们是否相等。问题是文件是相同的,并且在某些时候它 returns 作为失败。
这是我的功能:
void comparar_conteudo(){
for(int i = 1; i <= 10; i++){
int bp = 0;
char ficheiro1[100] = "saida/command";
char ficheiro2[100] = "expected/exp_query";
char commandString[2]; sprintf(commandString, "%d", i);
strcat(ficheiro1, commandString); strcat(ficheiro2, commandString);
strcat(ficheiro1, "_output.txt"); strcat(ficheiro2, ".txt");
FILE *novoFile1 = fopen(ficheiro1, "r");
FILE *novoFile2 = fopen(ficheiro2, "r");
char* line1 = malloc(sizeof(char));
char* line2 = malloc(sizeof(char));
while(fgets(line1, 1024, novoFile1)){
fgets(line2, 1024, novoFile2);
if(strcmp(line2,line1) != 0){
bp = 1;
break;
}
}
if(bp == 0)
printf("Query %d: SUCCESS\n", i);
else
printf("Query %d: FAILED\n", i);
fclose(novoFile1);
fclose(novoFile2);
free(line1);
free(line2);
}
}
输出如下所示:
Query 1: SUCCESS
Query 2: SUCCESS
Query 3: SUCCESS
Query 4: SUCCESS
Query 5: FAILURE
double free or corruption (out)
Aborted (core dumped)
我找不到问题,如果你能帮助我,我将不胜感激!
编辑:
如果我要求打印两行都有的内容 returns 像这样:
Query 1: SUCCESS
Query 2: SUCCESS
Query 3: SUCCESS
Query 4: SUCCESS
13108172;LeonardoCoelho71950;29
13108172;LeonardoCoelho71950;29
13108172;LeonardoCoelho71950;29
Query 5: FAILED
double free or corruption (out)
Aborted (core dumped)
一旦你这样做了
char* line1 = malloc(sizeof(char));
char* line2 = malloc(sizeof(char));
while(fgets(line1, 1024, novoFile1)){
所有赌注都取消了
您将 line1
分配为一个字节,然后将 1024 个字节读入其中。至少
char* line1 = malloc(1024);
char* line2 = malloc(1024);