我试图切换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;
}
答案 0 :(得分:1)
正如@PaulStelian所暗示的,直接交换是有问题的。将两个变量作为类比进行交换:要使其工作,您必须暂时将某个变量的数据存储在某处。 (或者使用异或交换,这很好,但很讨厌二进制数据。)
你最好的选择可能是复制一个文件,然后像
那样进行交换duplicateFile = copy(file1);
file1 = file2;
file2 = duplicateFile;
对于fopen
,使用r+
选项打开文件进行读写。 r
只是打开它进行阅读。
来自man fopen
:
r
打开文本文件进行阅读。流定位于 该 文件的开头。
r+
开放阅读和写作。流位于 文件的开头。