|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大佬们 请教一下
当运行下面读取a.txt并显示到终端上时 后面写入b.txt的不运行了 为什么?
如果把显示部分屏蔽 又能写进b.txt中
#include <stdio.h>
#include <string.h>
#define MAX 10
int main(){
FILE *fp;
FILE *fp1;
char buf[1024];
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[1026] , 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 ;
- }
复制代码
|
|