char id;
int num, r;
if (argc != 2) {
printf("error\n");
exit(1);
}
FILE *file = fopen(argv[1], "r");
if (file == NULL) {
printf("error\n");
exit(1);
}
while ((r = fscanf(file, "%c\t%d", &id, &num)) != EOF) {
if(r == 2) {
printf("id: %c, value: %d\n", id, num);
}
else if (r!=2) {
printf("bad input\n");
}
}
私がどのように見える読みしようとしているファイル:関数fscanf - 私は私が間違ってやっているのか分からない、ここで
を私は10
私は12
D 10
D 12
(文字/整数はタブで区切られています)。私の出力は、次のとおり
ID:I値:10
悪い入力
ID:I値:12
悪い入力
ID:D、値: 10
悪い入力
ID:D、値:12
悪い入力
私が間違って何をやっていますか? 「不正な入力」は、ファイルのフォーマットが正しくない場合にのみ印刷してください。上記のファイルは、適切にフォーマットされたファイルを示しています。 r == 2
とr != 2
が同時に何らかの形で満たされていることを理解できません。
EOFを返すためにscanfをチェックしないでください。期待されるアイテムの数が返されるかどうかをチェックする必要があります。 –
'\ n'とスペースも重要です。 – Matt
'FILE'が開かれている場合は' exit'しないでください:きれいに閉じられません。 – edmz