我开始学习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/