Pri*_*Raj 5 c input realloc dynamic-memory-allocation
如何在char*不指定大小的情况下将无限字符读入变量?
例如,假设我想要读取也可能需要多行的员工的地址.
你必须首先"猜测"你期望的大小,然后分配一个大的缓冲区malloc.如果结果太小,则使用realloc缓冲区调整大小.示例代码:
char *buffer;
size_t num_read;
size_t buffer_size;
buffer_size = 100;
buffer = malloc(buffer_size);
num_read = 0;
while (!finished_reading()) {
char c = getchar();
if (num_read >= buffer_size) {
char *new_buffer;
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);
/* Abort - out of memory */
}
buffer = new_buffer;
}
buffer[num_read] = c;
num_read++;
}
Run Code Online (Sandbox Code Playgroud)
这只是我的头脑,可能(读:可能会)包含错误,但应该给你一个好主意.