使用指针查找相同连续字符的最长序列的长度

时间:2017-11-02 17:30:34

标签: c++ c++11

以下代码无效。如果我输入输入为abcaad,则表示该文件已停止工作..Windows检查解决方案。如果我在声明字符指针后包含int i=0它正在工作。任何人都可以指明原因或帮助我吗?

  

开发一个程序,提示用户输入字符串并返回   相同连续字符的最长序列的长度   在字符串中使用指向数据成员和成员函数的指针。   例如,在字符串“aaaAAAAAjjB”中,最长的序列   相同的连续字符是“AAAAA”。

#include <iostream>
#include <fstream>

using namespace std;

fstream ob("js.txt");

int Search(char *ch)
{
  int count1=0,count2=0;
  for(int i=0;ch[i]!='\0';i++)
  {
    int j=0;
    while(ch[j]!='\0')
    {
        if(ch[i]==ch[j])
            count1++;
        j++;
    }
    if(count2<count1)
    {
        count2=count1;
    }
    count1=0;
  }
  return count2;
}

int main()
{
    char *c;
    cout<<"Enter a string: ";
    cin>>c;
    cout<<"Longest no. of identical consecutive characters: "<<Search(c)<<endl;
}

1 个答案:

答案 0 :(得分:0)

您的Search功能看起来不错,但您可以重构

int Search(const char *ch)

然后,您可以将类型从c更改为std::string(这也会修复导致崩溃的内存错误)。然后呼叫站点变为

int main()
{
    std::string c;
    cout<<"Enter a string: ";
    cin>>c; // Yup, the appropriate overload is implemented. Ain't C++ great?
    cout<<"Longest no. of identical consecutive characters: "<<Search(c.c_str())<<endl;
}

c_str()std::string中提取数据缓冲区;一个const char*指针。