c - C中的 boolean 函数

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

}

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

最佳答案

我猜这个循环:

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

}

应该是 b inputString 的反转。但是inputString[l]是字符串末尾的空字节,因此它只是将其重复复制到第一个 l-1b 的字符。应该是:

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/

相关文章:

python - Cython 扩展类型是否支持类属性?

ios - BOOL 属性 KVC : is this behavior a bug?

sql - 如何对至少有 X 个 boolean 1 的行求和?

c - 您将如何计算 float 中设置的位数?

c - 我必须用 -lgcc 链接文件吗?

c - Yacc/Lex 给出此代码的段错误

if-statement - boolean 规则困扰着我

python - ctypes - 将带有指针的结构传递给另一个结构

r - R 将 "TRUE"字符串强制为 TRUE 逻辑是怎么回事?

java - 带有 int : Java believes i want to convert to boolean 的 If 语句