我正在尝试编写一个检查回文的程序。
但是以某种方式我得到了细分错误。
该程序:

#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),这更有可能。

10-07 16:34