【发布时间】:2017-10-20 22:33:45
【问题描述】:
我正在尝试制作一个程序来检查输入的字符串是否使用递归。下面是代码。
#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() 引起的分段错误。我的代码哪里出错了?
谢谢。
【问题讨论】:
-
scanf("%s", word);调用 未定义的行为 - 您需要先初始化指针word以指向有效(且足够)内存 -
你还没有为
word分配内存——它只是一个指针。 -
说没有为
word分配内存,你可以改变它,例如char word [80]; -
您如何确定故障在
isPalindrome内部?scanf应该首先失败。 -
@DrewDormann 已修复。