比较不同文件的功能

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);