回答
假設一個C的問題,怎麼樣(未經測試):
char *arr = malloc(10);
size_t size = 10, index = 0;
int ch;
while ((ch = getc(stdin)) != EOF && ch != '\n' && ch != '\r') {
if (index >= size) {
size *= 2;
arr = realloc(arr, size); /* XXX check it first. */
}
arr[index++] = ch;
}
arr[index] = 0;
如果這真是一個C++的問題,你想std::getline
用std::string
。
我還會檢查ch!='\ r'是否安全。 – 2012-08-15 08:28:46
@izomorphius良好的通話。 – cnicutar 2012-08-15 08:29:27
不需要'\ r'檢查,它是多餘的; 'size'和'index'是錯誤的var-name – user411313 2012-08-15 09:06:58
std :: string有一個方法push_back
std :: vector也可以完成這個工作。不過,如果你真的被迫使用動態數組和字符指針,我會建議你實現類似於向量中使用的重新分配策略 - 每次元素數大於當前大小時,將大小加倍。
現在大多數實現將存儲塊擴展了1.5倍而不是2倍。這浪費了更少的空間,代價是更頻繁的重新分配。 – 2012-08-15 11:26:26
- 1. 動態數組初始化
- 2. 初始化字符數組
- 3. 字符數組初始化
- 4. 我們可以初始化動態字符串數組
- 5. 我如何初始化動態數組的字符串
- 6. 初始化字符串數組動態地使用C
- 7. 初始化動態字符串數組(C++)
- 8. C動態數組初始化問題
- 9. 初始化動態數組VHDL
- 10. System.IndexOutOfRangeException用於動態初始化數組
- 11. C#動態數組初始化[優點?]
- 12. 指定的動態數組初始化
- 13. 動態數組未正確初始化
- 14. C - 動態初始化數組
- 15. Jquery的數組初始化動態
- 16. C++初始化動態數組元素
- 17. 重新初始化動態數組
- 18. 動態二維數組初始化
- 19. 動態數組的初始化列表?
- 20. C++動態數組初始化碰撞
- 21. 靜態初始化數組?
- 22. 字符數組未正確初始化
- 23. Java字符數組初始化器
- 24. C多維字符數組初始化
- 25. 初始化整個字符數組
- 26. 未初始化的字符數組
- 27. 初始化多朦字符串數組
- 28. 使用初始化字符串數組
- 29. 的C#初始化字符串數組
- 30. 字符串數組初始化
它是C還是C++?如果C++ - 使用'std :: vector' – amit 2012-08-15 08:20:45
它是作業嗎?你需要數組還是列表? – Andrew 2012-08-15 08:21:09
@amit two.C或C++中的任何一個。 – MaxSteel 2012-08-15 08:21:27