【发布时间】:2020-03-17 09:32:12
【问题描述】:
我有问题。 我中风了:“/hello/world” 我需要将单词 'hello' 复制到另一个字符串;
我有这个代码:
void copy(char *command) {// copy
char *word = NULL;
int size = 1;
if (*command == '/') {
command++;
while (*command != '/') {
word = (char*)realloc(word, size * sizeof(char));
*word = *command;
size++;
word++;
command++;
}
printf("%s", word);
free(word);
}
但我收到此错误:Segmentation fault (core dumped)
我做错了什么?
【问题讨论】:
-
word++这是错误的。realloc需要从先前的malloc或realloc调用返回的相同指针作为第一个参数。通过增加指针,您将丢失原始指针。至于分段错误,很可能是因为您没有 NUL 终止您的字符串。 -
调试此问题和大多数其他错误的最佳方法是使用调试器。调试器至少会立即准确地告诉您哪一行代码触发了段错误。