我正在尝试制作一个程序,使用递归来检查输入的字符串是否是回文结构。以下是代码。
#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()引起的分段错误。我的代码在哪里出错?
谢谢。
答案 0 :(得分:0)
当你有一个字符指针时,你应该有另一个已分配的字符串并指向它
或者您可以直接为字符串动态分配空间。
如果你使用malloc一些空间
,你的代码是有效的char *word = malloc(20);
或者你可以创建一个字符串
char word[20];