【问题标题】:get characters (not separated with spaces) in array using scanf() [closed]使用scanf()获取数组中的字符(不以空格分隔)[关闭]
【发布时间】:2018-02-28 15:28:14
【问题描述】:

我需要将用户输入的字符存储在数组中,但不能一一存储。用户将像这样将它们输入为一行;

....

我需要将每个点保存在数组中,但我不能这样做:

scanf("%s%s%s%s", &s[0], &s[1], &s[2], &s[3])

因为用户可以输入 N 个点。所以我猜它一定是动态的。

【问题讨论】:

  • 您是否尝试将"%c%c%c%c" 用作格式字符串?或者在循环中使用std::istream::get()。另外我不明白为什么你不能简单地使用std::getline()
  • 您只想阅读点吗?如果是这样,使用 getline() 将整个字符串读入 std::string。你现在有一个字符数组。

标签: c++ c scanf


【解决方案1】:

scanf() 是一个 C 运行时函数。在 C++ 中,您应该改用 std::cin。例如,std::getline()。您可以将返回的std::string 视为字符数组。

【讨论】:

    【解决方案2】:

    用户将像这样将它们输入为一行; ....我需要将每个点保存在数组中,

    C 解决方案:

    定义像 1000 这样的正常上限并使用 scanset "%[]"

    // Read up to 1000 `.`
    char dot[1000 + 1];
    if (scanf(" %1000[.]") == 1) {
      //  Success
      puts(dot);
    }
    

    如果需要处理其他非.、非空白字符,则需要额外的代码。

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 2016-08-05
      • 1970-01-01
      • 2017-03-20
      • 2014-07-06
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多