gpt4 book ai didi

c - printf 结构从二进制文件到屏幕

转载 作者:行者123 更新时间:2023-11-30 21:11:43 28 4
gpt4 key购买 nike

我目前正在努力解决无法输出(printf)或正确读取二进制文件的问题。

The following code resulted as (fread: Success) though.

if (fread(list, sizeof(struct Ticket), 10, fp) == 10){
perror("fread");
}

然后我尝试使用以下代码打印:

for ( i = 0; i < 10; i++ ) {
printf("%d\t%s\t%d\n", list[i].code, list[i].station, list[i].price);
}

结果是困惑的无法识别的代码(尽管有 10 行)。

另外,当我尝试继续使用以下代码时:

printf("\nPlease submit your destination\n");
scanf("%d\n", dec);

fprintf(stdout, "%d\t%s\t%d\n", list[dec-1].code, list[dec-1].station, list[dec-1].price);

在 scanf 输入后出现分段违规错误。

附注使用 perror("fwrite") 测试了 fwrite; 并取得了成功。

抱歉英语和编程能力较差。如果有人能提供帮助,我将不胜感激。

谢谢

最佳答案

如果要打印格式化输出,请使用 fscanf 而不是 fread。

fscanf() 用于读取文本文件(即人类可读)

fread 用于从二进制文件中读取(即采用使用的格式) 由计算机内部)。

由于您以错误的方式编写了 scanf,因此您遇到了分段冲突。它应该是

scanf("%d\n", &dec);

您正在使用格式说明符在屏幕上打印输出。然后您应该使用格式说明符读取数据。毫无疑问,您可以使用 fread 读取任何文件您可以阅读 fread 的使用 here

关于c - printf 结构从二进制文件到屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19109056/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com