这是一个家庭作业,所以它不能使用任何类型的循环作为强制递归练习的方法。我也不会更改方法签名或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");
}
答案 0 :(得分:3)
printf
进行字符显示。 E.g printf("%c", character);
,而不是&amp; 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");
}