[英]Setting last character in a string to 0 causes program crash
这是一个家庭作业,所以它不能使用任何类型的循环作为强制递归练习的方法。 我也不是要改变方法签名,或者main()
函数中的任何东西。
该函数旨在使用递归来反向打印字符串。 我在这个网站上学习( 从C字符串中删除第一个和最后一个字符 )如何删除字符串中的最后一个字符。 当我尝试在我的代码中重现它时,程序在执行时崩溃。 这是代码:
#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");
}
printf
字符显示。 例如printf("%c", 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");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.