繁体   English   中英

Strcmp()在我的C程序中似乎不起作用?

[英]Strcmp() doesn't seem to work in my C program?

我正在编写一个程序来检查给定的单词是否是回文(单词的前后拼写相同)。

它几乎完成了,但是现在我遇到了strcmp()的问题。 即使正向单词和反向单词相同,也永远不会返回0。

这是检查向前与向后的功能。 如果这还不够,请告诉我。

bool isPalin(char msg[])
{
    int len = strlen(msg);
    char backwards[400]="";
    char letchar[2]="";
    int i;
    for(i=len-1;i>=0;i--){
        sprintf(letchar,"%c",msg[i]);
        strcat(backwards,letchar);
        strcpy(letchar,"");

    }

    if(strncmp(msg,backwards,(len/2))==0){return true;}
    else {return false;}
}

编辑:谢谢大家的帮助,但显然问题是完全出乎意料的。 我在一个字符串中有一个换行符,但在另一个字符串中却没有换行符(仍然不确定为什么),但是我能够删除该换行符,它对我有用。 我也做了你们推荐的优化。 我很讨厌优化:P

为什么还要麻烦strcmp?

int i = 0;
while(len > 1)
{
 if(msg[i] != msg[len-i-1]) return false;
 i++;
 len = len - 2;
}

return true;

如果您怀疑某个功能无法正常运行,请消除该功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM