求大神指点C语言关于文件读取的问题

weihua506966845 2018-03-11 12:21:37
首先我在一个文件中写入abc 然后开始读取
#include<stdio.h>
int main(){
FILE *fp;
int a[10] ;
fp = fopen("data","rb+");
rewind(fp);
fread(a,4,3,fp);
printf("%c %d,a[0],a[0]);
printf("\n");
fclose(fp);
return 0;
}
最后结果输出字符是能正常读取a 但是输出整数时确输出538976535
和我想象的输出97完全不同 不知道这是因为什么 明明能正常输出a
而且把数组改成char a[10]的话就可以正常输出 这有什么区别吗
求大神指点 小白刚学c没多久。。
...全文
269 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2018-03-11
  • 打赏
  • 举报
回复
在楼主的环境中,一个int变量占4个字节…… 所以文件中前4个字节的内容都被放到了a[0]里面..... 如果是char a[10],那么a[0]中就只是文件中第一个字节的内容 两者当然不一样 建议楼主不要着急,找本基础教材先系统地学学这个
mstlq 2018-03-11
  • 打赏
  • 举报
回复
因为printf看到"%c"之后,只解析了a[0]4个字节中的第一个,这是两个错误负负得正
weihua506966845 2018-03-11
  • 打赏
  • 举报
回复
引用 1 楼 mstlq 的回复:
在楼主的环境中,一个int变量占4个字节…… 所以文件中前4个字节的内容都被放到了a[0]里面..... 如果是char a[10],那么a[0]中就只是文件中第一个字节的内容 两者当然不一样 建议楼主不要着急,找本基础教材先系统地学学这个
谢谢 还有一点不能理解的是那既然文件前4个字节的内容都被放到了a[0]里面 那为什么用%c输出的时候能准确得输出c? 作为二进制存在内存里的时候感觉已经不是c的ascii码了。。

69,369

社区成员

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

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