我目前正在努力无法输出(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; 并取得了成功。
抱歉英语和编程不好。 如果有人能提供帮助,我真的很感激。
由于
答案 0 :(得分:0)
如果要打印格式化输出,请使用fscanf
代替fread。
fscanf()
用于从文本文件中读取(即人类可读)
fread
用于从二进制文件中读取(即使用的格式)
通过计算机内部。)
由于您以错误的方式编写了scanf,因此您正在获得分段违规。它应该是
scanf(“%d \ n”,&amp; dec);
您正在使用格式说明符在屏幕上打印输出。然后您应该使用格式说明符读取数据。毫无疑问,您可以使用fread
读取任何文件
您可以阅读使用fread here