我正在尝试使用一个返回的函数char * buffer
来捕获来自标准输入的随机用户输入,并返回一个char*
带有输入的(即字符串),直到'\n'
或被'\0'
检测为输入。
但是,该函数在函数 末尾附近的user_input()
第二次出现时崩溃(在注释处)。c = getchar();
//Error Here
我究竟做错了什么?
char* user_input(){
char *buffer=NULL;
size_t num_read = 0;
size_t buffer_size = 100;
char c = '\0';
char *new_buffer=NULL;
buffer = malloc(buffer_size);
fflush(stdin);
c = getchar();
while ( c != '\n' || c !='\0' ) {
if (num_read >= buffer_size) {
new_buffer=NULL;
buffer_size *= 2; // try a buffer that's twice as big as before
new_buffer = realloc(buffer, buffer_size);
if (new_buffer == NULL) {
free(buffer);
return NULL;
/* Abort - out of memory */
}
buffer = new_buffer;
}
buffer[num_read] = c;
num_read++;
c = getchar(); //Error Here
}//while
buffer[num_read] = '\0';
return buffer;
}