【问题标题】:How do I count the number of indexes used in an array如何计算数组中使用的索引数
【发布时间】:2018-12-01 18:33:01
【问题描述】:

编写一个程序,要求用户输入他们的姓名。名字和姓氏由用户分别输入。然后程序告诉以下内容: • 哪个部分(名字或姓氏)有更多字符,还有多少字符。 • 全名中使用的元音总数。 • 告诉用户名和名是否相同。 这是我的任务,我们不能使用字符串库。我们应该使用字符数组来执行此操作。

到目前为止,我还无法理解如何计算出用于存储字符的索引数量。 整数计数 = 0; cout

char arr[10];

cin.getline(arr, 10);

for (int i = 0; i < 10; i++) {

    if (arr[i] != ' ') {
        count++;
    }
    else {
        break;
    }
}

int x= sizeof(arr) / sizeof(arr[10]);
cout << arr;

cout << endl << count<< endl<<x;


return 0;

但我仍然没有找到解决方案。

【问题讨论】:

  • 显示的代码不会导致未定义行为的唯一方法是当输入的字符数正好为 9 时,这意味着所有 10 arr 中的 chars 被初始化。否则,它最终会使用未初始化的值(未定义的行为)。您需要了解的第一件事是 getline() 的工作原理,以及普通的 char 缓冲区。这是无法在 stackoverflow.com 上的简短回答中完全解释的内容(以及此处的所有其他问题)。不幸的是,stackoverflow.com 不是 C++ 教程网站。
  • 我们不能使用字符串库 -- 什么是“字符串库”?仅使用 char 数组,您就可以使用其他“库”(例如 STL 算法)或普通的 C-string 函数(例如 strlen)来完成所有这些工作。
  • 我认为这意味着 std::string 和大多数标准库都是禁区。
  • 根据manual,您可以使用cin.gcount() 找出输入了多少个字符。

标签: c++ visual-c++


【解决方案1】:

我使用了错误的字符进行比较。我应该使用 \0 但我使用的是 ' '。

for (int i = 0; i < 10; i++) {

    if (arr[i] != '\0') {
        count++;
    }
    else {
        break;
    }
}

【讨论】:

  • 你也可以只使用0 (integer) 而不是 '\0' (char);更难出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2017-08-11
相关资源
最近更新 更多