我正在学习C而且我正在阅读逐行输入的最佳方法。
基本上我想创建包含整行输入的字符串。下面的问题没有回答我应该如何处理字符串的内存分配。
How can I scan strings with spaces in them using scanf()?
我应该首先检测需要多少空间吗?怎么样?我每次需要更多空间时都应该重新分配吗?
请举例
输入来自文件或来自stdin(两者都可以但不能同时进行)
答案 0 :(得分:0)
以下重复分配缓冲区存储直到读取输入(省略malloc / realloc检查):
char *myGetLine(FILE *in)
{
char *buffer= NULL;
int c, i, j;
i= 0; j= 0;
do
{
c= fgetc(in);
if (i==j) {
j += 1024;
buffer= realloc(buffer, j);
}
if (c==EOF) break;
buffer[i++]= c;
} while (1);
buffer[i]= '\0';
return buffer;
}