分段错误的原因?

时间:2019-07-19 17:23:26

标签: c

我开始学习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");
}

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

1 个答案:

答案 0 :(得分:1)

不写入字符串常量。写入字符串数组。是的,我知道出于传统原因它们的类型为char*,因此如果您这样做,编译器将不会捕获您。

不要写:

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

写:

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

此外,您的程序显然由于return void而无法编译;