c语言,读取一个内容长度未知的文本文件。
2016-05-19 15:55
351 查看
我们常常会用到size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)这个函数进行文件的读取,但有些情况下,我们会发现读取文件之前并不知道文件的具体长度,故而对fread()的第三个参数也就是要读取文件的长度产生疑惑。解决方法如下:
注意,ftell()的返回值是文件的字节数。也就是说,如果你在进行数组或者结构体的写入和读取,要进行一步计算才能得到数组的元素个数。例如:
char* buffer; long lSize; FILE *fp; fp = fopen("someFile.txt","r"); if (fp==NULL) { printf("reading error\n"); exit (1); } // 将光标停在文件的末尾 fseek (fp , 0 , SEEK_END); //返回文件的大小(单位是bytes) lSize = ftell (fp); //将光标重新移回文件的开头 rewind (fp); //将文件的内容读取到buffer中 buffer = malloc(lSize); fread (buffer,1,lSize,fp); fclose (fp);
注意,ftell()的返回值是文件的字节数。也就是说,如果你在进行数组或者结构体的写入和读取,要进行一步计算才能得到数组的元素个数。例如:
numberOfElements=lSize/sizeof(anArray[0])
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例
- 探讨C语言的那些小秘密之断言