以下代码无效。如果我输入输入为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;
}
答案 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*
指针。