#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);
}
}
关于#c语言 文件#的问题,请各位专家解答!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- wan9zhi 2023-02-17 11:58关注
这段代码中存在一些问题。首先,数组 x 的大小是6,但是在初始化的时候只赋值了6个元素,超出了数组大小的范围,这是一种未定义行为。其次,在调用 fwrite 函数时,指定了要写入的元素个数为3,这实际上只写入了 x 数组中的前3个元素,即0、1和2。然后,在调用 fread 函数时,同样只读取了前3个元素,因此后面的3个元素(3、4和5)并没有被更新。最后,在 for 循环中,应该在循环结束后关闭文件句柄,而不是在每次循环中关闭。下面是修正后的代码:
#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), 6, fp); rewind(fp); fread(x, sizeof(int), 6, fp); for (i = 0; i < 6; i++) { printf("%d,", x[i]); } fclose(fp); return 0; } 在修正后的代码中,我们首先将数组 x 的大小设置为6,同时初始化了6个元素。接着,在调用 fwrite 函数时,指定要写入的元素个数为6。在调用 fread 函数时,也指定要读取6个元素。最后,在 for 循环中,我们将关闭文件句柄的操作放在了循环结束后。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
- ¥15 谁会P4语言啊,我想请教一下
- ¥20 win11无法启动 持续蓝屏且系统还原失败,无法开启系统保护
- ¥15 哪个tomcat中startup一直一闪而过 找不出问题
- ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
- ¥50 求解vmware的网络模式问题 别拿AI回答
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
- ¥15 springboot 3.0 实现Security 6.x版本集成
- ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
- ¥30 请帮我解决一下下面六个代码