Ç - 如何读取输入(C - How to read inputs)

2019-09-28 03:51发布

这是作业的一部分,但它不是主要部分

我已经通过自己手动更改数据所做的主要功能,但我真的不明白如何正确地读取用户输入。

这里有什么投入的样子:

3

1 2 9

6

1 1 3 4 4 6

0

所以基本上第一输入的下一个输入#的大小。 因此,对于如图3所示,阵列的大小为3 [1,2,9]为元素,和为6,阵列尺寸是6 [1,1,3,4,4,6]为元素

并且当输入是0时,该程序终止。

我想用一个while循环,并说当输入[0] =“0”和休息,我可以终止程序,但我不知道如何让其他投入一个字符数组。

正如你所看到的,有空间,所以scanf函数将不同的阅读每一个整数入字符数组。

之后我得到的是字符的输入,我相信我可以使用的atoi,使其恢复到整数...

所以,帮助我,我应该怎样才能正确地获取用户输入的代码...

也许这就是太含糊:这里是我的版本有点想:

while(1)
{
    scanf("%d", &ui);

    if(ui == 0)
    {
        break;
    }
    else
    {   
        size = ui;
        int temp[size];

        for(c = 0; c < size; c++)
        {
            scanf("%d", &input);
            temp[c] = input;
        }
    }
}

输出是良好的第一阵列,但在此之后,因为临时[大小]的,它输出很奇怪。 有任何解决这个问题的方法吗? 我想要的数组的大小是用户想要的尺寸大小。 (例如,用于输入我已经写以上:3和6)

Answer 1:

抓住了第一个数字应该是微不足道的,那么对于“数字串”考虑到你想读的空间,你可以简单地做一些喜欢使用scanf()的否定扫描集:

char input[100];
scanf("%99[^\n]", input);

或者只是fgets()

char input[100];
fgets(input, sizeof input, stdin);

然后,当你猜提出,在一个while循环等待这个第一个数字为0。

> I believe I can use atoi to make it back to integers

如果他们都是个位数(如你的例子),你可以简单地减去值'0' ,从他们得到的int



文章来源: C - How to read inputs