我不知道什么是错我的代码:分段错误
#include <stdio.h>
#include <string.h>
char* splitstr(char* str, int part, char search) {
char* out;
int i;
int result = 0;
for(i=0; str[i]!='\0'; i++) {
if(str[i] == search) {
result = 1;
break;
}
}
if(result == 0) {
if(part == 1) {
return str;
} else {
return "";
}
}
int j;
int k;
if(part == 2) {
for(j = 0; j < i; j++) {
out[j] = str[j];
}
out[j] = '\0';
} else {
for(k = 0,j = i+1; j <= strlen(str)-1; j++, k++) {
out[k] = str[j];
}
out[k] = '\0';
}
return out;
}
}
int main() {
printf("Starting program:\n");
char* str = "Hello World!";
char* a = splitstr(str, 1, ' ');
char* b = splitstr(str, 1, ' ');
printf("A is %s\n", a);
printf("B is %s\n", b);
}
它返回的输出如下:
Starting program:
Segmentation Fault: 11
与gdb
调试后,我发现,错误是在线路30上发生(通过使用断点),在循环的第一次迭代中,当它试图设置out[0]
(out[k]
)到str[6]
(str[j]
)。为什么会触发分段错误?我只是将字符串中的一个字符更改为另一个字符!
注意:发布的代码在声明之后有一个不寻常的大括号'}':'return out;' – user3629249