【C语言】C语言兑现文件内容的复制
【C语言】C语言实现文件内容的复制
这是吗?完全和预想的不一样,什么原因呢?
这是就OK了。
需求: fgetc fputc练习
/program文件下面存在一个文件 文件名为:addoverflowDemo.c 现在需要在该目录下复制一个相同的文件,文件名为test:
代码如下:
#include <stdio.h> #include <stdlib.h> int main() { FILE * sourcefile; FILE * desfile; char c; sourcefile = fopen("/program/addoverflowDemo.c","r"); desfile = fopen("/program/test","w"); while((c = fgetc(sourcefile)) != EOF) { fputc(fgetc(sourcefile),desfile); } fclose(sourcefile); fclose(desfile); return EXIT_SUCCESS; }
编译运行,结果如下:
[root@localhost program]# cat test icue<ti.>#nld sdi.> n an){ca u;itoeao1=47;/47 0101| 0011 eaeia 30 sm=oeao1 /iuto u 0101;cttehge is1 /iuto u 0011;cttelwrbt:Apit(sm=%\"sm;
这是吗?完全和预想的不一样,什么原因呢?
仔细分析程序运行结果:输出的时候好像都是隔了一个字符,
于是回过头去看源代码
while((c = fgetc(sourcefile)) != EOF) { fputc(fgetc(sourcefile),desfile); }可能是这里 fgetc每次都运行了两次,使得文件指针,每次都多移动了一位。
修改代码如下:
#include <stdio.h> #include <stdlib.h> int main() { FILE * sourcefile; FILE * desfile; char c; sourcefile = fopen("/program/addoverflowDemo.c","r"); desfile = fopen("/program/test","w"); while((c = fgetc(sourcefile)) != EOF) { fputc(c,desfile); } fclose(sourcefile); fclose(desfile); return EXIT_SUCCESS; }
这是就OK了。
这时我注意到了,在我第二次向文件test中输出的时候,test文件里面的原有值,那么,如何追加呢?
答:权限部分使用参数“a+”,即打开test文件的时候,将打开的权限设为 “a+”
desfile = fopen("/program/test","a+");
OK!
敲定。