社区
C语言
帖子详情
fread 读文件问题
jim900os
2003-09-12 09:21:32
函数fread 不知是不是有大小限制的。
long n=fread(temp,sizeof(byte),data_num,fp);
其中data_num=112000;
不知为何,返回 n=7239;
那位高手指点指点,谢谢。
...全文
644
5
打赏
收藏
fread 读文件问题
函数fread 不知是不是有大小限制的。 long n=fread(temp,sizeof(byte),data_num,fp); 其中data_num=112000; 不知为何,返回 n=7239; 那位高手指点指点,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TianGuangZao
2003-09-13
打赏
举报
回复
首先这里说声 sorry, 我把 fread 和 unix 的系统调用 read 给搞混了,我上面给的是 read。
fread 返回的是所有被读取的字节数,假如数目不等于请求的字节数,说明有错误发生或者到达文件结束标志(End of File)。
下面写了个读取完整文件的程序将功补过:
/* fread 读取大文件样例 */
#include <stdio.h>
#include <stdlib.h>
int main (char argc, char **argv)
{
char * fileName;
if (argc != 2)
{
printf ("Usage: a.out filename.\n");
exit (1);
}
else { fileName = argv[1];}
FILE * pFile;
long lSize;
char * buffer;
pFile = fopen ( fileName, "rb" );
if (pFile==NULL)
{
perror ("Error opening file");
exit (1);
}
// 获取文件大小.
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
printf("File size = %d\n", lSize);
rewind (pFile);
// 分配内存以包含整个文件
buffer = (char*) malloc (lSize);
if (buffer == NULL)
{
perror ("Couldn't allocate memory\n");
exit (2);
}
// 拷贝文件到缓冲区
long n;
n = fread (buffer,1,lSize,pFile);
printf("Read size = %ld\n", n);
/*** 整个文件被加载到缓冲区. ***/
if (!ferror (pFile))
printf ("No errors while reading.\n");
else perror ("Some errors happened.\n");
// 终止并释放缓冲区
fclose (pFile);
free (buffer);
return 0;
}
$ ./read_complete_file hacker.mpg
File size = 115115008
Read size = 115115008
No errors while reading.
读了几次感觉上还行。文件有 115M 大。
jim900os
2003-09-12
打赏
举报
回复
读取的是声音文件,比7239要大很多。
奇怪的是它还能返回非期望的读取的数字大小。
TianGuangZao
2003-09-12
打赏
举报
回复
fread 一次只能读取一定数目的字节,所以可能多次读,返回每一次读的字节数,7239 应该是最后一次的数目。
每一次读取的数目和 stdio.h 里的定义 BUFSIZ 大小有关,linux 系统:
cat /usr/include/stdio.h
/* Default buffer size. */
#ifndef BUFSIZ
# define BUFSIZ _IO_BUFSIZ
#endif
mme
2003-09-12
打赏
举报
回复
就算有限制,7239这个数字也不对劲啊!!!
晨星
2003-09-12
打赏
举报
回复
是不是你所读取的文件只有7239个字节?
为什么fwrite写
文件
后,用
fread
读
出来
文件
长度是0,即
fread
读
不出数据
为什么fwrite写
文件
后,用
fread
读
出来
文件
长度是0,即
fread
读
不出数据
php
fread
读
取
文件
注意事项
php
fread
函数用于从
文件
中
读
取一定长度的字符,本文章向大家介绍
fread
读
取
文件
的实例以及使用该函数
读
取
文件
需要注意的几个地方,需要的朋友可以参考一下。
readBil.rar_bil_
fread
matlab_hyperspectral_matlab高光谱_
读
取bil
采用Matlab下
fread
函数
读
取高光谱BIL
文件
数据
Matlab
文件
操作及
读
txt
文件
(fopen,fseek,
fread
,fclose).pdf
Matlab
文件
操作及
读
txt
文件
(fopen,fseek,
fread
,fclose).pdf
为什么
fread
(),fwrite()的返回值总是为0,但是
读
写
文件
正常
为什么
fread
(),fwrite()的返回值总是为0,但是
文件
读
写正常 初学C语言
文件
操作的新人,总会犯这个错误,明明
文件
读
写成功 ,但是返回值总是为0,而不是
读
写成功的字节数,原因是因为...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章