bool checkPalindrome(char * inputString) {
int i,j,l;
char b[50];
l=strlen(inputString);
for(i=0;i<l-1;i++)
{
b[i]=inputString[l];
}
printf("l is %d",l);
if(l==1)
{
return true;
}
else if((strcmp(inputString,b))==0)
{
return true;
}
else
{
return false;
}
}
这个功能有什么问题? 它总是给出其他部分的答案
答案 0 :(得分:1)
我猜这个循环:
for(i=0;i<l-1;i++)
{
b[i]=inputString[l];
}
应该使b
与inputString
相反。但是inputString[l]
是字符串末尾的空字节,所以它只是反复将其复制到l-1
的第一个b
字符中。它应该是:
for(i=0;i<l;i++)
{
b[i]=inputString[l-i-1];
}
之后,您需要向b
添加空终止符:
b[i] = '\0';
你不应该使用l-1
作为循环的限制,因为那样你就不会复制输入字符串的最后一个字符。
答案 1 :(得分:0)
代码中出现多个错误。
尝试以下方法:
bool checkPalindrome(char * inputString) {
int i,j,l;
char b[50];
l=strlen(inputString);
for(i=0;i<l;i++)
{
b[i]=inputString[l-i-1];
}
b[i] = '\0';
printf("%s\n",inputString);
printf("%s\n",b);
if(l==1)
{
return true;
}
else if((strcmp(inputString,b))==0)
{
return true;
}
else
{
return false;
}
}
代码中的问题: 1.字符串必须以&#39; \ 0&#39; 2.复制字符串的问题