2015-05-25 59 views
0

你好,我想知道C中是否有方法要求用戶輸入一個文本,只要他想要,然後根據他輸入的字符使用malloc()函數。在計算字符後輸入文本和malloc可能? (C)

+0

其中將這些角色去了,所以C可以在之後算他們?您需要使用malloc內存來保存字符串,以便您可以對它進行計數。這是一個雞/蛋問題。 –

+2

爲了支持任意長的輸入,你需要一個無限的臨時緩衝區來保存它,等待它結束。因此,典型的解決方案是通過使用固定大小的緩衝區來限制輸入的長度,或者在擴展緩衝區的同時以增量讀取(或創建新的緩衝區,例如作爲鏈接列表)。 – Arkku

+0

否。請參閱[此代碼動態地重新分配緩衝區以滿足需求](http://stackoverflow.com/a/7832033/2908724)。 – bishop

回答

2

最簡單的方法可能是scanf中的m修飾符,它是最近POSIX標準更新的一部分,在Linux和最新的Unix變體中支持,但不是在任何地方。

char *string; 
scanf("%m[^\n]%*c", &string); 

將讀取線從stdin(直到並不包括換行,這將被丟棄),因爲它使用malloc分配內存,並且將所得malloced指針存儲在變量string