如何从C中的一行获得多个数字?

时间:2017-05-03 14:43:29

标签: c input scanf

如果我想输入3个数字,我可以编写如下代码:

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

但是如何从一行动态获取输入数量?

例如,如果用户输入 N (数字),那么我必须从上面的一行获得 N 整数输入。

输入和输出应为:

how many do you want to enter: 5
1 2 3 4 5
sum: 15

3 个答案:

答案 0 :(得分:5)

由于Item{ signal qmlSignal(string msg) MessageDialog { onYes: parent.qmlSignal("From yes") onNo: parent.qmlSignal("From no") } } 返回填充的变量数量,您可以循环直到scanf没有更多值要读取或计数匹配:

scanf

答案 1 :(得分:1)

由于您之前不知道输入的大小,因此最好根据用户提供的输入大小创建动态数组。输入数组的大小并创建该大小的数组。然后,您可以轻松地遍历数组并随意执行任何操作。

string m1, m2, m3, m4;  // put some nice file paths in here

using (var m4Stream = File.Create(m4)) {
    using (var m1Stream = File.OpenRead(m1)) {
        m1Stream.CopyTo(m4Stream, 512);
    }
    using (var m2Stream = File.OpenRead(m2)) {
        m2Stream.CopyTo(m4Stream, 512);
    }
    using (var m3Stream = File.OpenRead(m3)) {
        m3Stream.CopyTo(m4Stream, 512);
    }
}

答案 2 :(得分:-3)

正如某人已经说过的那样你可以把它作为一个字符串读出来,当你看到一个空格时,它会分开这些值。在c中,如果您有一个数字,例如5是一个字符,您可以通过执行以下操作将其转换为数字:

int foo = '5' - '0' //foo is now 5

对于多个数字,你可以遍历字符串并找到它们的位置并将其乘以10然后将它们全部加起来

编辑:也忘了提,但是你可以使用带有字符*的atoi并将其转换为数字