#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 循环中,我们将关闭文件句柄的操作放在了循环结束后。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报