我目前有一个程序来检测输入的字符串是否是回文。我想避免使用 strlen 方法。
int main ()
{
char string[80];
bool Beginning;
Beginning = true;
while (Beginning)
{
cout << "nEnter a stringn" << endl;
cin.getline(string, 80);
cout << "nYou entered: ";
printf(string, 80);
cout << endl;
if('E' == string[0])
{
if('N' == string [1])
{
if('D' == string[2])
break;
}
}
int len=strlen(string); //avoid this method
bool flag = true;
for (int c=0; string[c]; c++)
{
if (flag)
{
if(string[c] != string[len-c-1])
{
flag = false;
}
}
else
{
break;
}
}
if (flag)
{
printf ("nThis is a Palindromen");
Beginning = true;
continue;
}
else
{
printf("nThis is not a palindromen");
Beginning = true;
continue;
}
cin.get();
}
}
我尝试过以下手动计数:
while (string[c] < ' ') {
c++;
int len = string[c];
}
上面搞砸了程序准确判断字符串是否是回文的能力,它会说它们都不是,或者都是。
如果我
理解正确,您需要正确的实现len
这将完成这项工作:
len =0;
while (string[++len] );
您所需要的只是检查空终止(因为您使用的是 C 字符串)
建议:请不要混用C&C++!