我几乎每隔三次就会遇到一个分段错误,我正在努力理解为什么.我认为它的原因是使用malloc()和free()错误.我必须读取用户标准输入,然后使用malloc将其保存在数组中.这部分工作,直到错误开始发生.
我的代码:
char *Input() {
char user_input;
int length;
char *buffer = malloc(2 * sizeof(char));
while (((user_input = getchar(stdin)) != EOF) && (user_input != '\n')) {
buffer[length] = user_input;
length++;
char *buffer_new = realloc(buffer, length + 2);
if (buffer_new != NULL) {
buffer = buffer_new;
} else {
free(buffer);
printf("Error.\n");
return 1;
}
}
buffer[length] = '\0';
if (strlen(buffer) > 200) {
printf("Error.\n");
return 2;
}
return buffer;
}
Run Code Online (Sandbox Code Playgroud)
我不确定我的错误在哪里或错误发生的原因.以下是我如何调用该函数:
int main() {
char *input = …Run Code Online (Sandbox Code Playgroud)