在字符串中计数字符出现时,C 分割故障



我已经写了一个简单的功能来计数字符串中字符的出现。编译器很好。但是,当我尝试运行它时,它产生了分割故障。

#include <iostream>
using namespace std;
// To count the number of occurences of x in p
// p is a С-style null-terminated string
int count_x(char* p, char x)
{
    if (p == nullptr)
    {
        return 0;
    }
    // start the counter
    int count = 0;
    while (p != nullptr)
    {
        if (*p == x)
        {
            ++count;
        }
    }
    return count;
}
int main(int argc, char const *argv[])
{
    char myString[] = "Hello";
    cout << count_x(myString, 'l');
    return 0;
}

您的代码中有两个错误:

  1. 您只看过字符串中的第一个字符。
  2. 零终止字符串的最后一个字符是一个空字符。您正在测试指针本身。

您需要使用std :: string

#include <string>
#include <algorithm>
#include <iostream>
int main()
{
     std::string str = "Hello";
     std::cout << std::count(str.begin(), str.end(), 'l');
}

相关内容

  • 没有找到相关文章