これは宿題の割り当てであり、再帰を強制するためのループとしては使用できません。また、メソッドシグネチャ、または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'は' int'ではなく 'size_t'を返します。 – melpomene