文件操作
来源:互联网 发布:网络摄像机客户端 编辑:程序博客网 时间:2024/05/17 12:02
注意下面代码所产生的问题。
这一段是读文件,没有什么问题。
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void main(){char *p = "I:\\文件字符读写\\1.txt";FILE *pr = fopen(p,"r");if (pr == NULL){return;}while (!feof(pr)){char ch = fgetc(pr);putchar(ch);}system("pause");}下面这段代码就有问题了,下面是一段复制文件的代码,查看文件也是没有问题的,但是从属性里可以看到,复制后的文件比原文件大了一个字节。这是由于下面这段代码引起的:
while (!feof(pr)) {char ch = fgetc(pr);<span></span>// 问题就出在这儿,当 fgetc(pr)读到最后 EOF 时,这时的ch =EOF ,而下面的代码:fputc(ch);把这个字字符写进了文件,所<span style="white-space:pre"></span>// 以多了一个字节fputc(ch, pw);}
void main(){char *namer = "I:\\文件字符读写\\1.txt";char *namew = "I:\\文件字符读写\\w.txt";FILE *pr = fopen(namer, "r");FILE *pw = fopen(namew, "w");if (pr == NULL){return;}while (!feof(pr)) {char ch = fgetc(pr);<span style="white-space:pre"></span>//问题就出在这儿,多写了个EOF。fputc(ch, pw);}fclose(pw);fclose(pr);system(namew);system("pause");}
上面的代码复制文件时会多个字节,如果在使用复制后文件再进行复制又会多个字节,反复这样使用就会使用文件变大。所以注意代码的细节。
可以改成这样:
<span style="white-space:pre"></span>char ch;while ((ch = fgetc(pfr)) != EOF){ fputc(ch, pfw);}当读到 EOF,即文件末尾时结束文件复制。
0 0
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- 文件操作
- C++拷贝构造函数、赋值运算符重载函数使用总结
- 我是如何利用一个只有500人的QQ通过人性的弱点来变现的
- day8-9(二)
- bzoj 1977 [BeiJing2010组队]次小生成树 Tree [严格的次小生成树]
- opt/buildroot-gcc342/bin/mipsel-linux-gcc: Command not found解决办法
- 文件操作
- CoreData—使用进阶
- 域名获取IP
- 浅谈HTTP中Get与Post的区别
- 前端模块管理器简介(bower-browserify)
- (UIL)使用3之Android Universal Image Loader 源码分析
- 设置图片的渐变色
- Fidder接口测试app使用
- 利用master..spt_values来生成连续日期