首页 > 解决方案 > 为什么 strlen(s) 与 s 的大小不同,为什么 cout char 显示的是字符而不是数字?

问题描述

'e'我写了一段代码来计算一堆单词中有多少个字符。

例如,如果我键入"I read the news",则存在多少个 的计数器e应该是 3。

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char s[255],n,i,nr=0;
    cin.getline(s,255);

    for(i=1; i<=strlen(s); i++)
    {
        if(s[i-1]=='e') nr++;
    }
    cout<<nr;

    return 0;
}

关于 C++ 中的字符,我有 2 个不清楚的地方:

  1. 在上面的代码中,如果我strlen(s)用 255 替换,我的代码就不起作用了。我只能输入一个单词,程序就停止了。我在学校被教过strlen(s)string 的长度s,在这种情况下,正如我声明的那样,它是 255。那么,为什么我不能只输入 255 而不是strlen(s)

  2. 如果我正常运行上面的程序,它不会向我显示数字,就像它应该做的那样。它向我展示了一个字符(我相信它来自 ASCII 表,但我不确定),例如心形或钻石。它应该e从单词中打印 's 的数量。

有人可以向我解释这些吗?

标签: c++characterascii

解决方案


  1. strlen(s)s为您提供变量中保存的字符串的长度,直到第一个 NULL 字符。因此,如果您输入“hello”,长度将为 5,即使s容量为 255....
  2. nr显示为字符,因为它被声明为char. int例如,要么将其声明为,要么int在计算时将其转换为 ,您将看到一个数字。

推荐阅读