【问题标题】:Multiple inputs in a single line using scanf()?使用scanf()在单行中进行多个输入?
【发布时间】:2015-09-25 09:41:57
【问题描述】:

我使用了scanf() 函数并意识到我只能将一个数字输入到使用它的数组中。有没有办法在一行中读取整数?

例如:

for(i=0;i<5;i++)
     {
     scanf("%d",&arr[i]);
     }

我想在一行中读取所有 5 位数字。希望我足够清楚!

【问题讨论】:

  • scanf("%d %d %d %d %d", &amp;arr[0], &amp;arr[1], &amp;arr[2], &amp;arr[3], &amp;arr[4]); 注意scanf想要一个地址(不是一个值)使用&amp;
  • 如果您担心每次都按回车键,那么您也可以写 5 个数字,给它们留出空间,然后按回车键

标签: c++ c


【解决方案1】:

如果您指的是单个源代码行,则可以使用:

scanf ("%d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4]);

或:

for (i = 0; i < 5; i++) scanf ("%d", &(arr[i]));

如果您的意思是单个输入行,那么这两个都可以。 %d 将跳过流中的前导空格,因此您是否输入几乎没有什么区别:

1 2 3 4 5

或:

1
2
3 4
5

我自己更喜欢循环版本,因为它可以任意大而不会使您的源代码行太长。

【讨论】:

    【解决方案2】:

    虽然你想要它在数组中。多个5 数字可以存储在单个int 变量中(取决于您系统上int 的大小)。

    在单个 scanf 中,您可以做到这一点 -

    scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]);
    

    这-

     for(i=0;i<5;i++)
     {
        scanf("%d",arr[i]);  //you missed &  should be scanf("%d",&arr[i]);
      } 
    

    【讨论】:

      【解决方案3】:

      您可以使用scanf ("%d %d %d %d %d", &amp;arr[0], &amp;arr[1], &amp;arr[2], &amp;arr[3], &amp;arr[4]);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 2013-02-20
        • 2014-06-13
        • 1970-01-01
        • 2012-11-11
        • 1970-01-01
        相关资源
        最近更新 更多