我写了一个程序来判断输入的字符串是回文还是非回文,但它总是说它不是回文。
#include <conio.h>
#include <graphics.h>
#include <string.h>
void main(void)
{
int i,len,halflen,flag=1;
char str[50];
clrscr();
printf("Enter a string:\n");
gets(str);
len=strlen(str);
halflen=len/2;
for(i=0;i<halflen;i++)
{
if(str[i]!=str[i+halflen])
flag=0;
break;
}
if(flag)
printf("It is a Palindrome.");
else
printf("It is not a Palindrome.");
getch();
}
main
定义为返回void
的函数。它必须始终返回int
。 • 检查调用gets
是否成功。 • 永远不要使用gets(str)
,而应该使用fgets(str, sizeof str, stdin)
,否则当用户输入过长的字符串时会导致未定义行为。 • 不要在main
函数中进行计算,而是编写自己的函数int is_palindrome(const char *str)
并将计算放入该函数中。 - Roland Illig