【问题标题】:How to take a integer array in a single line input [in C]如何在单行输入中获取整数数组[在C中]
【发布时间】:2022-07-11 23:23:14
【问题描述】:

如何在 C 语言中获取单行输入并将值存储在其数组中

#include <stdio.h>

int main()
{
    int arr[5];

    scanf("%d", &arr[0]);

    for(int i=1; i <= 5; i++){
        printf("%d\n", arr[i-1]);
    }

    return 0;
}

【问题讨论】:

  • 您有一个循环将数组写入到标准输出。毫不奇怪,您还需要其中一个(某种形式的循环)读取值。显然,现有代码读取 one 值。所以...改变它?
  • 如果在循环中输入每个数组值(可能类似于在循环中输出的方式),则可以在一行中输入所有 5 个值。重要的是它们被某种空白字符隔开。
  • @WeatherVane 但是我希望用户输入单行输入,再看上面的代码,你可能会关联它
  • 正如我所说,您可以在一行中显示所有五个输入,即使扫描每个输入的指令都在循环中。

标签: arrays c input


【解决方案1】:

如果您希望您的程序强制在一行中输入所有 5 个数字,那么我不建议您使用函数scanf。该函数通常对于基于行的用户输入不是很有用。

为了读取单行输入,您可以使用函数fgets 将该行读取为字符串。然后,您可以使用函数 sscanfstrtol 来转换该字符串的各个数字。

如果该字符串中应该有 5 个数字,那么您可能需要一个循环迭代五次并在每次循环迭代中转换一个数字。

或者,如果您使用sscanf,您也可以一次转换五个数字,使用格式字符串"%d%d%d%d%d" 并将五个参数传递给函数sscanf。但是,我不推荐该解决方案。使用循环可能会更好。

但是,如果您不想强制所有 5 个数字都在同一位置,而只想从用户那里读取 5 个数字,那么解决方案会更简单。您可以将已用于输出的相同类型的循环用于输入。

注意循环

for(int i=1; i <= 5; i++){
    printf("%d\n", arr[i-1]);
}

可以简化为:

for(int i=0; i < 5; i++){
    printf("%d\n", arr[i]);
}

按照community guidelines for homework questions,我暂时不提供完整的代码解决方案。如果您设法自己解决问题,您将学到更多。不过,如果有必要,我会给你更多提示。

【讨论】:

  • 为什么你不能输入 5 个值来单独调用 scanf,全部在一行上?在全部读取之前不会输出它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 2013-08-22
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
相关资源
最近更新 更多