在按下回车键之前,我如何才能将输入到数组中的整数值scanf()
。
我相信我可以使用getchar() != '\n'
。
但是我该怎么绕线呢?
假设我的输入是20 21 2 12 2
我想要一个包含所有这些输入的数组。
我可以用什么函数来扫描它们。
最佳答案
您试图将整数作为字符读取,因此一旦读取,就需要将其转换为整数。
使用fgets()
将行读取到缓冲区,然后解析输入缓冲区以获取整数。
将整数存储到数组中。
代码看起来像
char buf[300];
int a[5],i=0;
fgets(buf,sizeof(buf),stdin);
char *p = strtok(buf," ");
while(p != NULL)
{
char *endptr;
a[i] = strtol(p,&endptr,10);
if ((*endptr != '\0') && (isspace(*endptr) == 0))
printf("warning: invalid value detected\n");
else
i++;
p = strtok(NULL," ");
}
您可以使用替代
strtol()
而不是atoi()
将字符串转换为整数。注:你的
buf
应该足够大,可以容纳整条线fgets()
读到换行符。