我想在这C
得到两个指针,一个用于字符串的第一个字符,而另一个字符串中的中间人物写一个函数。功能需要检测是否有字符串的前半部分是相同的第二半(忽略大小写),并返回"TRUE"
或"FALSE"
。Ç - 递归处理字符串
我不知道停止条件的递归和为什么它不工作。
这是我的代码。什么是错误?
#define SIZE 80
enum { FALSE = 0, TRUE = 1 };
int CheckString(char* start, char* middle);
int main()
{
char str[SIZE], *pstart, *pmiddle;
printf("Enter a String-->:");
fgets(str, SIZE, stdin);
pstart = &str[0];
pmiddle = &str[(strlen(str) - 1)/2];
printf(" %d \n", CheckString(pstart, pmiddle));
return 0;
}
int CheckString(char* start, char* middle)
{
if (middle == '\0');
return TRUE;
if ((*start == *middle) || (*start == *middle + 32) || (*start == *middle - 32))
CheckString(start + 1, middle + 1);
else
return FALSE;
}
我改成了这个代码
int CheckString(char* start, char* middle)
{
if ((*start == *middle) || (*start == *middle + 32) || (*start == *middle - 32))
{
CheckString(start + 1, middle + 1);
return TRUE;
}
else
return FALSE;
}
,现在它的工作,但只对第一个字符和中间的不动什么拨错检查下字符 帮助别人???
的'pstart'以及'main'功能'pmiddle'变量*单个字符*,而不是指针。你的函数将跳出这些变量的界限,你将会有*未定义的行为*。 –
所以把它改成'* pstart'? –
由于递归路径没有返回值,因此会发出编译器警告。你只需调用'CheckString()',不要将它的返回值返回给递归链。是的,'pstart'和'pmiddle'需要指向原始字符串的开头和中间,而不是当前实现的那些位置的字符的副本。 – dhke