传递char *指针时的分段错误

时间:2017-10-20 22:33:46

标签: c pointers

我正在尝试制作一个程序,使用递归来检查输入的字符串是否是回文结构。以下是代码。

#include <stdio.h>
#include <string.h>

int isPalindrome(char* s, int i, int j) {
    if (i >= j)
        return 1;

    if (s[i] != s[j])
        return 0;

    return isPalindrome(s, i+1, j-1);
}

int main() {

    char* word;
    printf("Enter a word \n");
    scanf("%s", word);

    if (isPalindrome(word, 0, strlen(word) - 1))
        printf("Palindrome \n");
    else
        printf("Not Palindrome \n");

    return 0;
}

该程序似乎给出了函数isPalindrome()引起的分段错误。我的代码在哪里出错?

谢谢。

1 个答案:

答案 0 :(得分:0)

当你有一个字符指针时,你应该有另一个已分配的字符串并指向它

或者您可以直接为字符串动态分配空间。

如果你使用malloc一些空间

,你的代码是有效的
char *word = malloc(20);

或者你可以创建一个字符串

char word[20];