Bool函数在c

时间:2018-02-10 08:44:13

标签: c boolean

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;
    }

}

这个功能有什么问题? 它总是给出其他部分的答案

2 个答案:

答案 0 :(得分:1)

我猜这个循环:

for(i=0;i<l-1;i++)
{
    b[i]=inputString[l];

}

应该使binputString相反。但是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.复制字符串的问题