我开始学习C,但是我陷于此练习中,我必须实现一个可反转字符串(就地)的函数,而且我真的不知道自己在做什么错。任何帮助都将受到欢迎,谢谢!

#include <stdio.h>
#include <string.h>

void invertir(char* cadena){
    char aux;
    int i = 0;
    int j = strlen(cadena) / 2;
    while(i < j){
        aux = cadena[i];
        cadena[i] = cadena[j];
        cadena[j] = aux;
        i++;
        j--;
    }
    printf("La palabra invertida es: %s\n",cadena );
}

void main(){
    return invertir("parlante");
}


它给了我“细分错误”,我确定这是菜鸟的错误或我忘记做的事情。非常感谢您的耐心配合!

最佳答案

不要写字符串常量。写入字符串数组。是的,我知道由于传统原因它们属于char*类型,因此如果您执行此操作,编译器将不会捕获您。

不要写:

void main(){
    return invertir("parlante");
}


写:

void main(){
    char string[] = "parlante"
    invertir(string);
    puts(string);
}


同样,您的程序显然不会编译,因为return void;

关于c - 段错误的原因?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57117111/

10-16 10:34