| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 583 人关注过本帖
标题:[分享]C对文件操作的一些原则
取消只看楼主 加入收藏
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
 问题点数:0 回复次数:0 
[分享]C对文件操作的一些原则

今天当我想用FILE指针操作一.rmvb文件时发现不能对其读取.
起初我以为是那个电影文件太大,C对操作文件的大小有限制.
然后我就分别拿一些文件试验.发现:

读文件时:
不能打开文件扩展名>=4的文件.总会返回NULL.

写文件时文件扩展名可以>=4.
按文件位置指针的最大值原理上可以最大操作2047MB(2GB)的文件
但实际上不知是否一样.

还有一点:
文件位置指针是从0开始,
最后一个字节是EOF标志.
当建立一文件后,会自动在末尾写入EOF标志,所以对文件拷贝后比原文件大一字节.

用feof(fp)判断文件结束有点问题,不知这个函数原型是怎么定义的,
是如何判断文件结束的.


while(!feof(fp))
{
printf("%d",ftell(fp));
putchar(fgetc(fp));
}

你会发现输出的字符中有'Y',这个是文件结束标志,-1,他会转化成(无符号数unsigned char)255输出,所以ASCII码'y'

然后:

fseek(fp,0L,SEEK_END); /*把文件位置指针移到最后*/
printf("%d",feof(fp));
/*输出时不是你想的1,虽然已经是文件最后,但它输出的是0.
这儿很让人纳闷.
*/

对文本文件的操作:
1.用ASC码方式
fputc('\n');
向文件里面写放'\n'时,会自动在前面加上'\r'(回车),多一字节.
实际写放的是两个字节.'\r','\n'
读入时,会把回车换行变成一个字节,只保留'\n'

fgets(str,n,fp)函数,读入数据的结束条件是遇到EOF或换行符,
注意:虽然遇到换行符就会结束,但换行符也会读入内存.
fgets的返回值为str的首地址,苦读到文件尾或出错,返回NULL.
2.二进制方式
这个不会增删字节.
但生成文件的话总会在尾部添加EOF标志,多一字节.


上面就是我的总结.错误处希望大家指正,feof()它的判断原理谁懂的话请讲一下.

[此贴子已经被作者于2007-2-3 10:27:15编辑过]

搜索更多相关主题的帖子: 原则 文件 分享 
2007-02-03 10:19
快速回复:[分享]C对文件操作的一些原则
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.057333 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved