C编程我试图从2个txt文件切换内容

时间:2018-05-26 14:13:44

标签: c file input output

我试图切换2个txt文件的内容,它们只有字符行。

我尝试这样做,程序编译但不修改文本文件中的任何内容。还有另一种方法吗?

FILE *f, *p;
char linha[TAM], linha2[TAM];

f =fopen("texto.txt", "r");

if(f==NULL)
{
    printf("Erro ao abrir ficheiro");
    fclose(f);
    return;
}

p =fopen("texto2.txt", "r");

if(p==NULL)
{
    printf("Erro ao abrir ficheiro");
    fclose(p);
    return;
}


while( fgets(linha,TAM,f) != NULL || fgets(linha2,TAM,p) != NULL )
{
    if(strcmp(linha, "") != 0)
    {
        fprintf(p, "%s", linha);
    }

    if(strcmp(linha2, "") != 0)
    {
        fprintf(f, "%s", linha2);
    }
}

fclose(f);
fclose(p);


return 0;

}

1 个答案:

答案 0 :(得分:1)

正如@PaulStelian所暗示的,直接交换是有问题的。将两个变量作为类比进行交换:要使其工作,您必须暂时将某个变量的数据存储在某处。 (或者使用异或交换,这很好,但很讨厌二进制数据。)

你最好的选择可能是复制一个文件,然后像

那样进行交换
duplicateFile = copy(file1);
file1 = file2;
file2 = duplicateFile;

对于fopen,使用r+选项打开文件进行读写。 r只是打开它进行阅读。

来自man fopen

  

r打开文本文件进行阅读。流定位于   该                 文件的开头。

     

r+开放阅读和写作。流位于                 文件的开头。