我想读取用户输入的两位数字。但问题是用户也可能只输入1个号码。所以输入列表可以是这样的:
1 2
2
4 2
15
这是一个简单的问题,但我找不到确切的问题。大多数问题都要求输入空字符串,但现在是整数的情况。
由于
答案 0 :(得分:2)
scanf
用于格式化输入输出。这并不符合您的要求。正如提到的那样使用fgets
来读取整行,然后使用strtol
等来解析输入的数字。
#define MAXLEN 60
....
char pp[MAXLEN+1];
if(fgets(pp,MAXLEN+1,stdin) == NULL ){
fprintf(stderr,"Error in input");
exit(EXIT_FAILURE);
}
char *ptr = pp;
char *end;
errno = 0;
long i = strtol(ptr, &end, 10);
while( ptr != end )
{
ptr = end;
if (errno == ERANGE){
printf("range error, got ");
errno = 0;
}
printf("Got - %ld\n", i);
/* work with i */
i = strtol(ptr, &end, 10);
}
代码演示here。