gpt4 book ai didi

c - 将字符串中的最后一个字符设置为 0 会导致程序崩溃

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

这是一项家庭作业,因此它不能使用任何类型的循环作为强制递归练习的方式。我也不会更改方法签名或 main() 函数中的任何内容。

该函数旨在使用递归反向打印字符串。我在这个网站 (Strip first and last character from C string) 上学习了如何删除字符串中的最后一个字符。当我尝试在我的代码中重现它时,程序在执行时崩溃了。这是代码:

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

void print_reverse_str(char *str) {
if (strlen(str) == 1)
printf("%c", &str[0]);
else {
int len = strlen(str);
int lastIndex = len - 1;
char endChar = str[lastIndex];
printf("%c", &endChar);
str[lastIndex] = 0;
print_reverse_str(str);
}
}

int main() {
print_reverse_str("My string");
printf("\n");
print_reverse_str("!ti tog uoy ,siht daer nac uoy fI");
printf("\n");
}

最佳答案

  1. 您不能更改字符串文字。
  2. 字符显示用printf。例如 printf("%c", character);,不是 &character

试试这个。

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

void print_reverse_str(char *str){
if (*str){
print_reverse_str(str+1);
printf("%c", *str);
}
}

int main(){
print_reverse_str("My string");
printf("\n");
print_reverse_str("!ti tog uoy ,siht daer nac uoy fI");
printf("\n");
}

关于c - 将字符串中的最后一个字符设置为 0 会导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40753170/

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