我正在尝试使用C获取未知长度的stdin。我尝试了以下代码。但是它说无法分配内存。谁能告诉我原因。
size_t len=sizeof(chunk);
char *read=malloc(len);
size_t len_chunk;
read[0]='\0';
do{
fgets(chunk, sizeof(chunk),stdin);
len_chunk = strlen(chunk);
size_t len_read= strlen(read);
if(len-len_read<len_chunk)
{
len *= 2;
if ((read = realloc(read, len))==NULL)
{
perror("Unable to allocate memory");
free(read);
exit(1);
}
}
strcpy(read+len_read, chunk);
len_read+=len_chunk;
}while(chunk[len_chunk-2]!='\n');