在按下回车键之前,我如何才能将输入到数组中的整数值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()读到换行符。

10-02 04:00
查看更多