-3

私は現在、出力(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);
}

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 での入力後にセグメンテーション違反としてエラーが表示されました。

PS fwrite は perror("fwrite"); でテストされました。そして成功を収めました。

英語とプログラミングが下手でごめんなさい。誰かが助けてくれれば本当に感謝します。

ありがとう

4

1 に答える 1

0

フォーマットされた出力を印刷したい場合はfscanf、fread の代わりに使用します。

fscanf()テキストファイルからの読み取りに使用されます(つまり、人間が読み取ることができます)

freadバイナリファイルからの読み取りに使用されます (つまり、コンピューターが内部で使用する形式)。

また、scanf を間違った方法で記述したため、セグメンテーション違反が発生しています。

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

フォーマット指定子を使用して画面に出力を出力しています。次に、フォーマット指定子を使用してデータを読み取る必要がfread あります。

于 2013-10-01T06:11:35.607 に答える