[問題] 如何得知一串數字由幾個數字組成

作者: 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
請問有方法可以根據使用者輸入幾個數字而改變陣列大小的方法嗎? 而不預先配置字元陣列大小
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-06-20 11:40:00
現在我要開一條彈性馬路,根據今天有多少車通過改變大小請問如何辦到不然改一下 現在我想開一部彈性公車 根據今天有多少乘客改變車的大小 請問如何辦到
作者: blackwindy (黑色的風)   2014-06-20 11:52:00
std::vector std::string std::stream
作者: GoodmanYY (GOgoHigher)   2014-06-20 13:03:00
M大,就是這意思,請問可能辦到嗎?b大,是要用到C++的物件才可以實現嗎?
作者: LPH66 (-6.2598534e+18f)   2014-06-20 14:26:00
可能, 但你必須要自己處理使用者輸入(以彈性公車的比喻來說, 你得管理一下上車的人, 這樣一來當車子不夠大時你才能夠加大公車) 8F 推的那些物件把這些事都包起來了 (找了別人幫忙管理彈性公車)
作者: Killercat (殺人貓™)   2014-06-20 14:49:00
用C的話 GLib算是個不錯的STL在C上的替代品
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-06-20 18:03:00
我是覺得很麻煩而且意義不大啦 現在記憶體又不是只有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語言加個指令這樣,看來是我想太簡單了謝謝大家熱心地回答

Links booklink

Contact Us: admin [ a t ] ucptt.com