如果我要宣告一個字串陣列,可是我無法預先得知這個陣列將會有多少個字元限制,那我該怎麼打?
例如:如果宣告: char str[10]就代表會有10個字元,那我不能先設定字元的話要怎麼宣告呢?
請問有誰能夠幫幫我呢 >"<
2007-02-01 16:01:42 · 4 個解答 · 發問者 Jaysper 1 in 電腦與網際網路 ➔ 程式設計
char *str;
int i;
str = (char *) malloc(i * sizeof(char));
2007-02-01 21:26:47 補充:
malloc 要 include
i 要先設成你要的大小
2007-02-01 21:29:24 補充:
有些太龜毛的 compiler 會認為
char *ptr, p[x]
是不同的東東。
要是你的compiler是龜毛型,可以在它 complain 的地方加上型別轉換就可以了。
如 (char *) p,它就不會 complain 了
2007-02-02 14:40:07 補充:
我補充的東東是指在後面使用時,不是指在 malloc 時。
2007-02-01 16:25:19 · answer #1 · answered by ? 7 · 0⤊ 0⤋
可以利用記憶體動態配置
他一開始就有一個unsigned int size= pow(2,32)-1
這表示最多可以儲存的量
然後他會配置最大的size用來暫存輸入結果
char* str=(char*)malloc(str,size*sizeof(char) )
然後用strlen來求實際字元(直到"")
接著對他進行重新配置
str=(char*)realloc(str,(size=strlen(str))*sizeof(char))
這樣就很ok了~~~
2007-02-14 10:24:51 · answer #2 · answered by 艾斯寇德 2 · 0⤊ 0⤋
#include
char *str;
str = (char *) malloc(10 * sizeof(char));
補充說明一下
之所以要加轉換型別的 (char *)
是因為 malloc 適用於任何的資料型態
所以他回傳的是 void *
正式寫法必須加上 (char *) 將 void * 轉成 char *
但是因為 str 本身就是 char *
就算程式碼不加,編譯器也會自動強制轉型
只是可能會有個 warning 訊息就是了
但是加上去是寫程式的好習慣
2007-02-01 19:57:28 · answer #3 · answered by 智強 3 · 0⤊ 0⤋
改成宣告char poiter:
char *str;
然後再用malloc 去動態配置memory 給這個pointer來用
2007-02-01 16:25:59 · answer #4 · answered by 我是誰 6 · 0⤊ 0⤋