输入数据在一行中用C中的空格分隔?

时间:2014-03-21 06:11:54

标签: c

假设用户输入 3 5在一条线上 那么我必须能够将它们存储在2个变量中。  用户将在一行中输入多个变量的数据,当按下Enter时,我必须能够获取每个数据并将它们存储在单独的变量中。 知道该怎么办?

3 个答案:

答案 0 :(得分:1)

读取整行直到ENTER键,然后使用'空格'对字符串进行标记。作为分隔符。这样,您可以根据需要读取任意数量的值。

答案 1 :(得分:0)

我能想到很多可能的解决方案。

各种解决方案是:

  1. 逐个字符地读取输入字符,然后读取空格,从中创建单词。
  2. 使用va_list(可变参数列表)。
  3. 持续扫描数字直至行尾。
  4. 我告诉你如何实现第一个。剩下的就是你试试。

    while((ch = getchar()) != '\n')
    {
        if(ch == ' ')
        {
            a[count++] = atoi(numString);
            i = 0;
            numString[i] = '\0';
        }
        numString[i++] = ch;
        numString[i] = '\0';
    }
    a[count++] = atoi(numString);
    

答案 2 :(得分:-2)

使用scanf()scanf()可以读取空格分隔的输入数字 你可以用

scanf("%d%d",&a,&b)

2个数字。如果在编译时未知输入数量,请使用数组。处理变量很容易。如果[]是变量的数组,那么

 a[0],a[1],a[2]....

如果输入数量未知,则使用类似

的内容
int a[MAX_SIZE],n,i;
printf("Enter no of inputs");
scanf("%d",&n);
for(i=0;i<n;i++)
 sacnf("%d",&a[i]);

使用#define在程序的开始处根据需要定义MAX_SIZE。

您甚至可以阅读input as string,然后使用strtok()将字符串分成标记,并使用atoi()获取数字。如果你不知道输入的数量,可以使用这种方法。