小编Sar*_*ara的帖子

fscanf - 我不知道我在这里做错了什么

 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");
    }
  } 
Run Code Online (Sandbox Code Playgroud)

我正在尝试阅读的文件如下:

我10

我12

d 10

d 12

(字符/整数是制表符分隔的).我的输出是:

id:i,价值:10

输入不好

id:i,价值:12

输入不好

id:d,值:10

输入不好

id:d,值:12

输入不好

我究竟做错了什么?如果文件格式不正确,则只应打印"输入错误".上面的文件演示了格式正确的文件.我不明白如何r == 2r != 2同时(两种情况都以某种方式得到满足).

c scanf

5
推荐指数
1
解决办法
261
查看次数

标签 统计

c ×1

scanf ×1