由于fopen函数中读取文件的符号,“r”,"r+"都需要该文件存在,我们创建一个file1
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *file1,*file2;
int ch;
//先进行错误判断,再开始你的任务
if(!(file1 = fopen("file1","rw+"))){
perror("open file1\n");
exit(1);
}
if(!(file2 = fopen("file2","w+"))){
perror("open file2\n");
exit(1);
}
while((ch = fgetc(file1)) != EOF){
fputc(ch,file2);
}
fclose(file1);
fclose(file2);
return 0;
}
运行之后得到的file2结果和file1一样,完成复制!
接下来我们利用fgets()函数来实现逐行字符串复制到另外一个文件!首先还是先把要读取的文件file1写一下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *file1,*file2;
if(!(file1 = fopen("file1","r+"))){
perror("open file1\n");
exit(1);
}
if(!(file2 = fopen("file2","w+"))){
perror("open file2\n");
exit(1);
}
char *s = (char*)malloc(100);
// int n = 100;
while(!(feof(file1))){//当file1不为空时
// while(fgets(s,100,file1)!=NULL){//也可以这么判断
//fgets调用在读入若干个字符后到达文件末尾,则将已读到的字符串加上'\0'存入缓冲区并返回
//如果再次调用fgets则返回NULL,可以据此判断是否读到文件末尾。
fgets(s,100,file1);//用fgets(s,100,file1)!=NULL时就不要重复执行该函数了,while内已经执行
fputs(s,file2);
}
free(s);
fclose(file1);
fclose(file2);
return 0;
}
再来看看执行之后产生的副本文件file2的内容:
好的,已经成功完成复制!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。