可能重复:
为什么这个 C 代码会导致分段错误?
我正在编写一个简单的字符串反向脚本。
我添加了打印语句进行调试。在 Error1 之前,我不断收到运行时异常。但我似乎无法弄清楚原因。
这是我的代码:
#include <iostream>
#include <cstdlib>
using namespace std;
int strlen(char* s){
int i = 0;
while(*s != '\0'){
i++;
s++;
}
return i;
}
void reverse(char* src){
char* dest = src+strlen(src)-1;
char temp;
while(src < dest){
temp = *src;
cout << "Error0" << endl;
*src = *dest;
cout << "Error1" << endl;
*dest = temp;
cout << "Error2" << endl;
src++;
dest--;
}
}
int main (void){
char* s = "Hello world";
cout << s << endl;
int i = strlen(s);
cout << i << endl;
reverse(s);
cout << s << endl;
getchar();
return 0;
}
这是我的输出:
Hello world
11
Error0