作者:
GoodmanYY (GOgoHigher)
2014-06-20 00:14:24開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
問題:使用一個會隨使用者所輸入的數字字元個數而改變大小的字元陣列
使用者輸入最少一個,最多六個數字(範圍0~999999)
假如輸入5的話,陣列裡面有一個元素為5
假如輸入555的話,陣列裡面有三個元素為555
假如輸入555555的話,陣列裡面有六個元素為555555
不想預先配置陣列大小
想使用動態配置記憶體字元陣列大小下手
但是卻打不出關鍵程式碼
餵入的資料(Input):
1).5
2).55
3).555
預期的正確結果(Expected Output):
1).有1個數字為5
2).有3個數字為555
3).有6個數字為555555
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *digptr;
char dig[?]; //不知問號該填什麼
printf("請輸入數字:");
scanf("%c", &dig); //輸入數字並放在dig陣列裡面
digptr = (char *) malloc( ? * sizeof(char) );
printf("有%d個數字為%c\n", ,dig);
system("pause");
return 0;
}
*****補充說明:*****
char[?]和malloc的問號是我不知該如何下手
因為卡在不知道該如何得知會輸入幾個數字個數
問題可能對大家來說很淺,但是我想破頭還是不知該如何實現
請各位提點一下謝謝。
作者:
firejox (Tangent)
2014-06-20 00:38:00第一個問號那邊 就想最長輸入有多長就好了
作者:
GoodmanYY (GOgoHigher)
2014-06-20 10:35:00請問有方法可以根據使用者輸入幾個數字而改變陣列大小的方法嗎? 而不預先配置字元陣列大小
現在我要開一條彈性馬路,根據今天有多少車通過改變大小請問如何辦到不然改一下 現在我想開一部彈性公車 根據今天有多少乘客改變車的大小 請問如何辦到
std::vector std::string std::stream
作者:
GoodmanYY (GOgoHigher)
2014-06-20 13:03:00M大,就是這意思,請問可能辦到嗎?b大,是要用到C++的物件才可以實現嗎?
作者:
LPH66 (-6.2598534e+18f)
2014-06-20 14:26:00可能, 但你必須要自己處理使用者輸入(以彈性公車的比喻來說, 你得管理一下上車的人, 這樣一來當車子不夠大時你才能夠加大公車) 8F 推的那些物件把這些事都包起來了 (找了別人幫忙管理彈性公車)
用C的話 GLib算是個不錯的STL在C上的替代品
我是覺得很麻煩而且意義不大啦 現在記憶體又不是只有4K你搞linked list、搞realloc等等effort遠超過我割一塊buffer 就可以讓user打到地老天荒都打不滿頂多注意一下overflow以免遭人利用 方法也很簡單以前有人想跟你一樣的事情 他還寫出分成兩個armrealloc的程式 也在本板 算他有想法 但是你知道realloc裡面OS耗費多少effort就不會想要這樣做了Premature optimization is the origin of all sins
作者:
GoodmanYY (GOgoHigher)
2014-06-20 20:16:00囧...看起來是個浩大的工程我以為只是在C語言加個指令這樣,看來是我想太簡單了謝謝大家熱心地回答