获取文件大小及注意事项
来源:互联网 发布:卡洛儿秘密知乎 编辑:程序博客网 时间:2024/04/30 18:02
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//文本文件 读取 \r\n -->\n 写入 \n -->\r\n 获取文件二进制大小,理论都是 rb//获取大小理论都用 rb int getfilesize(char *path){int sum = 0;FILE *pfr = fopen(path, "rb");//if (pfr == NULL){printf("打开文件失败!\n");return -1;}else{//这儿使用 int 代替 char 结果又正确了,可以见这儿读取时出现了溢出问题,造成了EOF的出现。<span style="white-space:pre"></span>//int ch; //代替 char ch; 就可以解决问题。//char ch;//while ((ch = fgetc(pfr)) != EOF) //这儿有ch会为 EOF 所以读不准确//{//sum++;//}//这个准确但是比较慢。char ch;sum = -1;//使用这个获取文件大小时,因为这儿要读到 文件的结束//把 EOF 也读进来,加了一次,所以这个要减去。while (!feof(pfr)){ch = fgetc(pfr);//if (ch == '\n')如果是使用 "r" 进行读写的,就需要多加一次//{//sum++;//如果是使用 "r" 进行读写的,就需要多加一次////因为 \n 写入文件时被写成 \r\n,而使用"r"读取时就读一次////所以读出的结果不准确。如果使用 "rb" 进行读取而不会出这////这样的情况。所以最好获取文件大小时使用 "rb".//}sum++;}//最方便的一种方法/*fseek(pfr, 0, SEEK_END);sum = ftell(pfr);*/}return sum; }//这儿写入了一些 \n 来做验证void tbw(char *path){FILE *pfw = fopen(path, "w");if (pfw == NULL)printf("打开失败!\n");for (int i = 0; i < 5; i++){fputc('\n',pfw);}fclose(pfw);}char *pathw = "D:\\w.txt";void main(){tbw(pathw);printf("%d\n", getfilesize(pathw));system("pause");}
0 0
- 获取文件大小及注意事项
- 获取文件大小及文件名
- Java 获取文件大小及文件读写操作
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- 获取文件大小
- Windows开发--获取文件大小及获取文件夹大小的方法
- Android获取文件夹及文件大小整合成的帮助类
- 并查集
- typedef和#define的用法与区别
- 多标记处理(2)UVA 11402
- Ubuntu14.10登录界面隐藏其他用户登录窗口
- 【Spark benchmark】 NMON 和 BigDataBench测试
- 获取文件大小及注意事项
- java lucene中文分词
- 14.[LeetCode]Longest Common Prefix
- UVALive-7303- Aquarium【最小生成树】【连通块】
- [Java]UML类图
- 数组
- 2016.08.09
- 第五十八篇:VS调试出现“覆盖。。。。是/N:否/A:全部)??”
- 用socket把单词写入服务器