【发布时间】:2017-12-23 02:13:59
【问题描述】:
我想知道为什么这段代码在char tab[100] 下工作得很好,但如果我使用char *tab 就不行? fgets 函数将char* 数组作为参数,对吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Int Palindrome(char* str, int i, int j);
int main()
{
char tab[100];
printf("Enter your string : \n");
fgets(tab, 100, stdin);
int j = strlen(tab);
printf("%d\n", Palindrome(tab, 0, j - 2));
return 0;
}
int Palindrome(char* str, int i, int j)
{
if (i >= j)
{
printf("My word is a Palindrome !\n");
return printf("<(^w^)>\n");
}
else if (str[i] != str[j])
{
printf("My word is not a Palindrome !\n");
return printf("<(X.X)>\n");
}
else
{
return Palindrome(str, i + 1, j - 1);
}
}
【问题讨论】:
-
char tab东西在哪里? -
它将与
char *tab= malloc(100);一起使用 -
“不起作用” 怎么样?你得到了什么错误?这个
char *tab在哪里声明?你有没有费心为它分配内存?更加努力地提出一个有用的问题。 -
你是什么意思“但是如果我使用 char *tab 就不起作用”?你分配你的字符串了吗?
-
阅读 C 教科书中处理指针的章节。
标签: c arrays pointers recursion palindrome