[英]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.