C中的I/O:读取整数和查找字符

C中的I/O:读取整数和查找字符,c,C,我试图用C语言给出IO的例子,所以我在看ACM ICPC输入例子的UVA。我偶然发现。我觉得没问题,所以我把它编码了: while(fgets(tmp,MAX,stdin)!=NULL){ sscanf(tmp,"%d %d", &x, &y); printf ("num1: %d, num2: %d\n",x,y); } 对于此输入 12 5 10 A 12 34 123 456 1 2 10 2 问题是

我试图用C语言给出IO的例子,所以我在看ACM ICPC输入例子的UVA。我偶然发现。我觉得没问题,所以我把它编码了:

  while(fgets(tmp,MAX,stdin)!=NULL){
    sscanf(tmp,"%d %d", &x, &y);
    printf ("num1: %d, num2: %d\n",x,y);
  }
对于此输入

12   5
    10     A
12 34
  123   456
  1    2
  10   2

问题是。。。它们接受一个字符(在本例中为
a
)。。。我该怎么查呢?我确实需要A.

因为这两个项可以是任意基,只需将这两个项读取为字符串(在函数族中使用
%s
)并将它们存储到2个数组中,然后使用
strtol
(以及相关函数,如,…)转换为不同的基以测试是否相等。

因为这两个项都可以是任意基,只需将这两个项读取为字符串(在函数族中使用
%s
),并将它们存储到2个数组中,然后使用
strtol
(以及相关函数,如,…)转换为不同的基以测试是否相等。

scanf
告诉您有多少次读取成功。如果忽略该值,您将面临访问垃圾的风险(请参阅)。问题不太清楚-您是要读取
A
,还是忽略该行?“A”表示0xA基数11以上。因此,那些以字符串形式而不是以整数形式读取的方法是好的。因为本练习是关于以未指定的基数读取整数值的,所以以10为基数读取整数值可能不是好办法-您可能希望坚持使用字符串
scanf
来告诉您有多少次读取成功。如果忽略该值,您将面临访问垃圾的风险(请参阅)。问题不太清楚-您是要读取
A
,还是忽略该行?“A”表示0xA基数11以上。因此,那些以字符串形式而不是以int形式读取的值是好的。因为本练习是关于以未指定的基数读取整数值的,所以以10为基数读取整数值可能不是正确的方法-您可能希望坚持使用字符串