gpt4 book ai didi

c - 递归反转 C 中的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:19 25 4
gpt4 key购买 nike

我必须在递归函数中反转字符串,但我不能使用循环或 strlen 来查找字符串的结尾位置。然后我必须将反转后的字符串传回 main 并将其复制到一个新文件中。这是我到目前为止所拥有的:

int reverse(char *str, char *strnew, int p)
{
char temp=str[p];
if(temp=='\0' || temp=='\n')
{
strnew=str;
return p;
}
else
{
reverse(str++, strnew, ++p);
p--;
strnew[p]=str[p];
printf("strnew: %c\n", strnew[p]);
return 0;
}
}



int main(int argc, char *argv[])
{
FILE *fp;
char buffer[100];
char newstr[100];
int pointer=0;
fp=fopen("lab8.txt", "r");
if(fp==NULL)
{
printf("Error opening file\n");
return 0;
}
(fgets(buffer, 100, fp));
reverse(buffer, newstr, pointer);
printf("newstr: %s\n", newstr);
FILE *fp2=fopen("lab8.2.txt", "w");
fputs(newstr, fp2);
fclose(fp);
fclose(fp2);

return 0;
}

我不知道如何反转字符串。我已经找到空字符在哪里使用 p,但如何将字符串向后复制到新字符串中?

最佳答案

#include <stdio.h>

int reverse(char *str, int pos){
char ch = str[pos];
return (ch == '\0')? 0 : ((str[pos=reverse(str, ++pos)]=ch), ++pos);
}

int main(){
char buffer[100];

scanf("%99[^\n]", buffer);
reverse(buffer, 0);
fprintf(stdout, "%s\n", buffer);
return 0;
}

关于c - 递归反转 C 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878979/

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