我正在尝试编写一个简单的 C 程序来反转字符串。代码如下:
void swap(char* a, char* b){
char* temp;
*temp = *a;
*a = *b;
*b = *temp;
}
char* reverseString(char* str){
int length = strlen(str);
int i=0;
for(i=0; i<(length/2); i++){
swap(&str[i], &str[length-i-1]);
}
return str;
}
int main(){
char str[] = "Hello World";
reverseString(str);
printf("%s\n",str);
return 0;
}
它确实打印了正确的结果,但随后给出了 SEGMENTATION FAULT。它发生在主函数的“return 0”语句处。
你能帮我弄清楚为什么会发生 SEG FAULT。
谢谢。
最佳答案
在您的 swap()
函数中,问问自己:
void swap(char* a, char* b){
char* temp;
问:temp
现在指向哪里?
A:未知,可能在某个危险的地方。
*temp = *a;
然而我们只是在那个地方写了一些东西。
相反,使用 char
:
void swap(char* a, char* b){
char temp;
temp = *a;
*a = *b;
*b = temp;
}
关于C 程序在给出正确输出后意外崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862945/