gpt4 book ai didi

C字符串递归函数从中间找出相等性

转载 作者:行者123 更新时间:2023-11-30 20:20:57 25 4
gpt4 key购买 nike

我感觉有点失落,因为我们开始学习指针,我有点无法理解,而且我知道它在 C 语言中非常重要。

无论如何!

所以我必须创建一个递归函数,它将获得 2 个指针:

1) 指向索引[0]的指针。

2) 指针 2 指向字符串的中间。

现在..我要检查从0到中间的第一部分从中间到结束是否相等。就像......亚当。

在我传输字符串之前,我将整个小写字母更改为大写以避免区分大小写......所以我得到了类似的东西......但它拒绝工作。

也禁止使用常量...

#include <stdio.h> 
#include <string.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define SS 81
int CheckString(char *,int *);

int main() {
char str[SS];
int length,len,strcheck;
printf("Please enter a string:\n");
fgets(str,SS,stdin);

len=(strlen(str) - 1);
if((len>0)&&(str[len]=='\n')) // replacing '\n' key to '\0'
str[len]='\0';

length=len/2;
strcheck=CheckString(str,&length);
if (strcheck==FALSE)
printf("FALSE.\n");
else
printf("TRUE.\n");
return 0;
}

// function
int CheckString(char *str, int *i) {
if (*str != '\0')
if (*str == str[*i])
return CheckString(str+1,i++);
else
return FALSE;
return TRUE;
}

所以我想我的指针有问题

最佳答案

您的意思似乎是以下

#include <stdio.h>
#include <string.h>

int CheckString(const char *s, size_t *i)
{
return s[*i] == '\0' || *s == s[*i] && CheckString(s + 1, i);
}

int main( void )
{
char *s = "ADAMADAM";
size_t i = strlen(s) / 2;

int result = CheckString(s, &i);
printf("%s\n", result ? "true" : "false");

return 0;
}

程序输出

true

注意:也许您应该按以下方式计算第二个参数的值

    size_t i = ( strlen(s) + 1 ) / 2;

想想这个。

关于C字符串递归函数从中间找出相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44295911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com