我开始学习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");
}
这给了我“细分错误”,我确定这是菜鸟的错误或我忘记做的事情。非常感谢您的耐心等待!
答案 0 :(得分:1)
不写入字符串常量。写入字符串数组。是的,我知道出于传统原因它们的类型为char*
,因此如果您这样做,编译器将不会捕获您。
不要写:
void main(){
return invertir("parlante");
}
写:
void main(){
char string[] = "parlante"
invertir(string);
puts(string);
}
此外,您的程序显然由于return void
而无法编译;