从用户获取多个int作为输入

时间:2013-02-02 23:58:15

标签: c arrays input integer

我知道C ++,但我正在尝试编写我的第一个C程序,我希望能够从用户那里获得一行输入并将其转换为10个不同的数字。例如,系统会提示用户输入一些数字,最多可输入10个数字:

  

输入最多10个数字:

     

> 34412 12455 435234 44 199 4735890 034001 154595

然后我想将它们存储在一个数组中,然后再用它们做。我已经搜索了如何获得输入,但我发现的大部分内容对我来说并不清楚。任何帮助将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:2)

如果您确定用户总是要输入由空格/制表符和换行符分隔的整数,而不是超过10个整数,则可以使用这一个班轮来完成这一操作:

int arr[10];
int count = 0;

while(scanf("%d",&(arr[count++])))
   ;

利用scanf返回匹配项目数的事实。

答案 1 :(得分:1)

您可以阅读一些有关C函数的内容:

  1. fgets() 阅读整行。 最后删除换行符。
  2. strtok() 标记该行。
  3. strtol()将每个字符串转换为整数。
  4. 将它们存储在一个数组中。
  5. 如果您不担心无效输入,可以使用 sscanf() 来读取C字符串。

答案 2 :(得分:1)

您可以从用户输入读取行,对其进行标记,然后使用sscanf直接从令牌中检索数字:

// array big enough to hold 10 numbers:
int numbers[10] = {0};

// read line from users input:
char inputString[200];
fgets(inputString, 200, stdin);

// split input string into tokens:
char *token = strtok(inputString, " ");

// retrieve a number from each token:
int i = 0;
while (token != NULL && i < 10) {
    if (sscanf(token, "%d", &numbers[i++]) != 1)
        ; // TODO: ERROR: number hasn't been retrieved
    token = strtok(NULL, " ");
}