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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度