繁体   English   中英

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

[英]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");
}
  1. 您无法更改字符串文字。
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM