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;
}
}
这个函数有什么问题吗? 它总是给出其他部分的答案
最佳答案
我猜这个循环:
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
作为循环的限制,因为这样您就不会复制输入字符串的最后一个字符。
关于c - C中的 boolean 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48718905/