-1
我想做一個程序,檢查輸入的字符串是否是迴文或使用遞歸。這是下面的代碼。通過char *指針傳遞段錯誤
#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'來首先指向有效的(和足夠的)內存 – UnholySheep
你還沒有爲'word'分配內存 - 它只是一個指針。 –
表示沒有爲「word」分配內存,您可以將其改爲例如'char word [80];' – macroland