可能重复:
How to dynamically allocate memory space for a string and get that string from user?
我有一个档案。当从文件中逐行读取时,字符串的长度是未知的,因此如何以有效的方式为未知长度字符串分配内存。
请注意: -
文件中的每一行都用“\ n”分隔。
编程语言 - c
答案 0 :(得分:6)
这样做的一般模式是
malloc
的缓冲区。 realloc
将缓冲区大小加倍并继续阅读答案 1 :(得分:0)
一种方法是通过系统调用找出文件大小(如果我没记错的话,为fstat)。如果文件非常大,那就不是特别好,因为它可能不适合内存。
另一种方法是逐行读取(或以n个字节的块为单位)直到您到达文件末尾字符。看到: http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html
答案 2 :(得分:0)
您可以使用malloc
,fgets
和realloc
。
从固定大小的malloc开始。也许是64个字节。
然后fgets你的字符串的大小。检查字符串的结尾是否有\n
。如果没有,realloc
字符串将增加一倍。现在再fgets
一些,然后重复,直到你的字符串以换行符结尾或者到达文件的末尾。