使用scanf()获取数组中的字符(不用空格分隔)

时间:2017-09-19 18:19:46

标签: c++ c scanf

我需要将用户输入的字符存储在数组中,但不是逐个存储。用户将这些输入为这样的一行;

....

我需要在阵列中保存每个点,但我不能这样做:

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

因为用户可以输入N个点。所以它必须是动态的,我想。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

  

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

C解决方案:

将上限理解定义为1000并使用 scanset "%[]"

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

如果需要处理其他非.,非白色空格字符,则需要其他代码。