读取文件和打印的问题
大佬们 请教一下当运行下面读取a.txt并显示到终端上时后面写入b.txt的不运行了 为什么?
如果把显示部分屏蔽又能写进b.txt中
#include <stdio.h>
#include <string.h>
#define MAX 10
int main(){
FILE *fp;
FILE *fp1;
char buf;
char ch;
fp = fopen("a.txt","r");
while (!feof(fp)){
fgets(buf,1024,fp);//读取一行
printf("%s", buf); //输出
}
fp1 = fopen("b.txt","w");
while ((ch=fgetc(fp))!=EOF)
{
fputc(ch,fp1);
}
fclose(fp);
fclose(fp1);
printf("\n");
return 0;
} 本帖最后由 jackz007 于 2019-11-17 00:46 编辑
在读取显示 'a.txt' 文件内容后,读写指针位于文件结束,在文件复制之前,必须复位文件 'a.txt' 的读写指针,这样,才可以把 'a.txt' 完整复制到 'b.txt' 。
下面是我修改的代码,谨供楼主参考:
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE * fp , * fp1 ;
char buf , ch ;
if((fp = fopen("a.txt" , "r")) != NULL) {
fgets(buf , 1024 , fp) ;
while(! feof(fp)) {
printf("%s", buf) ;
fgets(buf , 1024 , fp) ;
}
if((fp1 = fopen("b.txt" , "w")) != NULL) {
fseek(fp , 0 , 0) ;// fp 的指针在文件结尾,必须把它移动到文件开头。
ch = fgetc(fp) ;
while (! feof(fp)) {
fputc(ch , fp1) ;
ch = fgetc(fp) ;
}
fclose(fp1) ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "错误:无法创建输出文件 b.txt\n") ;
fprintf(stderr , "\n") ;
}
fclose(fp) ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "错误:无法打开输入文件 a.txt\n") ;
fprintf(stderr , "\n") ;
}
return 0 ;
}
jackz007 发表于 2019-11-16 17:41
在读取显示 'a.txt' 文件内容后,读写指针位于文件结束,在文件复制之前,必须复位文件 'a.txt' 的 ...
谢谢 现在弄懂了
页:
[1]