【发布时间】:2021-04-04 12:51:42
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student
{
int id;
int grade;
};
struct Student john;
int main()
{
john.id = 100;
john.grade = 80;
struct Student steve;
fwrite(&john, sizeof(struct Student), 1, stdout);
fread(&steve, sizeof(struct Student), 1, stdout);
printf("\n%d %d \n", steve.id, steve.grade);
return 0;
}
我正在尝试将struct 写入文件(在本例中为标准输出),然后我正在尝试读取它。
它打印的值是随机的,可能是什么原因?
【问题讨论】:
-
你知道
stdout是终端或控制台的输出文件句柄吗?我建议您首先为所有可以返回成功/失败的函数添加错误检查,例如fwrite和fread。 -
@Someprogrammerdude 是的,但这有什么不同吗?它们不都被视为文件吗?
-
文件可以是只读、只写或读写。
stdout是只写的。这基本上就是fopen的第二个参数的用途。 -
“随机”是什么意思?我希望写入能够成功写入值,但它们不会很好地显示在您的屏幕上。
fread我预计会失败。 -
或许可以这样想:
stdout是 console 或 terminal。您写入stdout的数据实际存储在哪里?它只是写入控制台或终端。