关于c语言函数fread和fgetc读取文件的问题

jiayinjia1983116 2006-04-28 08:08:59
//girl.dat是一副256*256图象经过256个灰度级量化的采样值,也就是说里面存的是0~255的对应二进制数,但是用fread和fgetc进行度取时,用fread不能 读取数据,而用fgetc读取的数显示全是-1,请教高手了,请帮帮我调试一下程序,是读出的树能顺利的存到数组p中

#include"stdio.h"
main()
{
char p[1024]={0};//此处用1024是为了方便,便于调试。
int i;
FILE *fp;
clrscr();

if ((fp=fopen("girl.dat","r"))==NULL)

{printf("can not open file");
exit(0);
}
fread( p,1,1024,fp);
for(i=0;i<1024;i++)
{ /* p[i]=fgetc(fp);*/
printf("%d",p[i]);
}

getch();
fclose(fp);
}
...全文
441 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2006-04-28
  • 打赏
  • 举报
回复
fread 要对应 2进制 方式文件 ....
文本文件的话,
应该用 fscanf ...
jiayinjia1983116 2006-04-28
  • 打赏
  • 举报
回复
再次请教一下,我按上面的方法试了之后,用fread显示还是为0,请问这是为什么?
duduhaha 2006-04-28
  • 打赏
  • 举报
回复
二进制读,改成unsigned char型缓冲区,利用fread的返回值判断是否读取成功.
#include"stdio.h"
main()
{
unsigned char p[1024]={0};//此处用1024是为了方便,便于调试。
int i;
FILE *fp;
clrscr();

if ((fp=fopen("girl.dat","rb"))==NULL)

{printf("can not open file");
exit(0);
}
int len = fread( p,1,1024,fp);
printf("%d\n",len);
for(i=0;i<1024;i++)
{ /* p[i]=fgetc(fp);*/
printf("%d",p[i]);
}

fclose(fp);
getch();

}

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧