all righyyyy 2023-03-14 13:43 采纳率: 97.4%
浏览 20
已结题

关于#c语言文件#的问题


#include <stdio.h>
int main()
{
FILE* fp = fopen("test.dat", "wb");
int x[6] = { 0,1,2,3,4,5}, i;

fwrite(x, sizeof(int), 3, fp);

rewind(fp);

fread(x, sizeof(int), 3, fp);

for (i = 0; i < 6; i++)

    printf("%d,", x[i]);

    fclose(fp);
}


请问这段代码为什么打印的是0,1,2,3,4,5呢,
不应该是0,1,2吗?

  • 写回答

4条回答 默认 最新

  • 海拥✘ 全栈领域优质创作者 2023-03-14 13:57
    关注

    在这段代码中,首先将数组x的前三个整数{0, 1, 2}写入二进制文件"test.dat"中,然后将文件指针回到文件开头,再从文件中读取三个整数,也就是读取了之前写入的{0, 1, 2},并将它们存储回数组x中。最后通过循环输出数组x中的所有六个整数。

    因此,输出的结果应该是0,1,2,3,4,5。原因是,虽然在写入文件时只写入了前三个整数,但在读取文件时仍然读取了整个数组x的大小,即读取了3个整数的大小,因此fread函数读取了文件中的前三个整数{0, 1, 2},并将它们存储到数组x的前三个位置中,而数组的后三个位置{x[3], x[4], x[5]}则没有被修改,仍然保持原来的值{3, 4, 5}。因此,在循环中输出数组x时,会输出所有六个整数的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月14日
  • 已采纳回答 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真