为什么文件被附加成功了,但是遍历无法输出文件的内容呢?
/*
命令行参数中输入几个文件名,第一个文件名为要被目标文件名,后面的文件名为源文件名,把源文件附加到目标文件中
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void append1(FILE *source,FILE * dest);
int main(int argc,char * argv[]){
FILE *fa;
FILE * fs;
int files=0;
int ch;
if(argc<3){
fprintf(stderr,"没有足够的文件参数\n");
exit(EXIT_FAILURE);
}
if((fa=fopen(argv[1],"a+"))==NULL){
fputs("目标文件不能写入\n",stderr);
exit(EXIT_FAILURE);
}
for(int i=2;i<argc;i++){
if((fs=fopen(argv[i],"r"))==NULL){
fprintf(stderr,"源文件 %s 不能读\n",argv[i]);
continue;
}
append1(fs,fa);
files++;
fclose(fs);
printf("%d files appended\n",files);
}
while((ch=getc(fa))!=EOF){
putchar(ch);
}
puts("\nover 了 ");
fclose(fa);
return 0;
}
void append1(FILE *source,FILE * dest){
char temp;
while((temp=getc(source))!=EOF){
putc(temp,dest);
}
}
输出的结果为:
1 files appended
over 了
请问这个问题出在哪里? 同样的条件下使用二进制IO附加文件,就可以输出内容,请问问题出在哪里?