1
最后一个字符这是一个家庭作业,所以它不能使用任何类型的循环,以此来迫使递归的做法。我也不会更改方法签名或main()
函数中的任何内容。设置在一个字符串为0会导致程序崩溃
功能旨在使用递归打印在反向的字符串。我在这个网站(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");
}
你试图修改字符串文字。 – melpomene
'printf''%c'需要一个'char',而不是一个指向'char'的指针。 – melpomene
'strlen'返回一个'size_t',而不是'int'。 – melpomene