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:ⅰ,值:10
壞輸入
ID:ⅰ,值:12
壞輸入
ID:d,值: 10
不良輸入
ID:d,值:12
壞輸入
我到底做錯了什麼?如果文件格式不正確,只能打印「不良輸入」。上面的文件演示了格式正確的文件。我不明白r == 2
和r != 2
在同一時間(兩種條件都以某種方式滿足)。
不要檢查scanf是否返回EOF。您應該檢查它是否返回預期項目的數量。 –
'\ n'和空格也有意義。 – Matt
如果您打開了「FILE」,則不應該「退出」:它不會完全關閉。 – edmz