可能重複:
How to dynamically allocate memory space for a string and get that string from user?如何分配未知字符串長度存儲在C
我有一個文件。當從一個文件逐行讀取時,字符串的長度是未知的,所以如何以有效的方式爲未知長度的字符串分配內存。
注: -
文件中的每一行用 「\ n」 分隔。
編程語言 - C
可能重複:
How to dynamically allocate memory space for a string and get that string from user?如何分配未知字符串長度存儲在C
我有一個文件。當從一個文件逐行讀取時,字符串的長度是未知的,所以如何以有效的方式爲未知長度的字符串分配內存。
注: -
文件中的每一行用 「\ n」 分隔。
編程語言 - C
這樣做的一般模式是
malloc
。realloc
到緩衝區的規模擴大一倍,並繼續閱讀一個讀入該緩衝區方法是通過系統調用找出文件大小(如果我沒有記錯的話,可以用fstat)。如果文件非常大,這可能不太適合,因爲它可能不適合內存。
另一種方法是逐行讀取(或以n個字節爲單位),直到文件字符結束。參見: http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html
您可以使用malloc
,fgets
和realloc
。
從一個固定大小的malloc開始。也許是64個字節。
然後fgets你的字符串的大小。檢查你的字符串的末尾是否有\n
。如果不是,realloc
字符串將大小加倍。現在fgets
更多並重復,直到您的字符串以換行符結束或您到達文件的末尾。
http://stackoverflow.com/questions/8164000/how-to-dynamically-allocate-memory-space-for-a-string-and-get-that-string-from-u –
請參閱讚的鏈接。在打開新的問題之前,最好先查看現有的問題。 – dbeer
@dbeer我搜查了,我找不到相關的問題,這就是爲什麼我提出了它。上面我沒有發現這個過程的一部分。任何感謝的鏈接,但我仍然不滿意答案。我期待更好的回答,這會減慢我的執行速度。 – Thangaraj