我正在尝试编写一个检查回文的程序。
但是以某种方式我得到了细分错误。
该程序:
#include <stdio.h>
int palindrome(char *beginning); //functions declaration
int main()
{
char str[255],c; //variables
int i=0;
printf("please enter a string: "); //message to user
fgets(str,255,stdin);
palindrome(str[255]);
return 0;
}
int palindrome(char *beginning) //functions to chack palindrome
{
char *end = beginning + strlen(beginning) -1;
if (end - beginning <= 0)
return 1;
if (!isalpha(*beginning))
palindrome(beginning+1);
if (!isalpha(*end))
{
*end = '\0';
palindrome(beginning);
}
if (*beginning == *end)
{
*end = '\0';
return palindrome(beginning+1);
}
return 0;
}
最佳答案
char str[255]
保留255个值。使用palindrome(str[255]);
,您尝试传递str
的256th(!)值,该值不存在。
而且,palindrome
接受char *
指向char
的指针,但是您传递的是char
,这将导致许多其他错误。您可能正在寻找&str[254]
,或者正如注释中所指出的那样,仅寻找palindrome(str)
,这更有可能。