printf struct从二进制文件到屏幕

时间:2013-10-01 06:02:02

标签: c

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

  

以下代码导致(fread:Success)尽管。

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

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

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

导致凌乱的unidentify代码(虽然它是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输入后出现分段违规错误。

P.S。用perror(“fwrite”)测试了fwrite;      并取得了成功。

抱歉英语和编程不好。 如果有人能提供帮助,我真的很感激。

由于

1 个答案:

答案 0 :(得分:0)

如果要打印格式化输出,请使用fscanf代替fread。

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

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

由于您以错误的方式编写了scanf,因此您正在获得分段违规。它应该是

  

scanf(“%d \ n”,&amp; dec);

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