字符數組指針我想下面這兩個聲明之間的交叉:定義與大小
char string[6];
char * string;
我需要一個指針具有固定的大小,我不想用malloc
的東西這麼簡單。
所有這個字符數組需要做的是被分配一個值並讓它被一個函數檢索,如下所示。 (但是,在循環中因此是單獨的聲明)執行此操作的最佳方法是什麼?
string = "words";
printf("%s",string);
字符數組指針我想下面這兩個聲明之間的交叉:定義與大小
char string[6];
char * string;
我需要一個指針具有固定的大小,我不想用malloc
的東西這麼簡單。
所有這個字符數組需要做的是被分配一個值並讓它被一個函數檢索,如下所示。 (但是,在循環中因此是單獨的聲明)執行此操作的最佳方法是什麼?
string = "words";
printf("%s",string);
既然你現在說,你不能使用@ nightcracker的解決方案,我認爲你需要使用strncpy()
分配給字符串。
char string[6];
/* .... loop code */
strncpy(string, "words", 6);
printf("%s", string);
我想,在實際的程序中,你將不會被使用字符串字面量,因此對於strncpy()
的需要。
這樣做,我希望避免它,但它看起來很隆重。 – 2011-05-02 01:38:09
定義一個常數陣列的大小被通過初始化計數:
const char string[] = "words";
如果只想一個指針的存儲器的固定大小量的小,只使用它是這樣的:
const int STR_LEN = 10;
char str[STR_LEN];
... loop, etc
strncpy(string, "1234567890", STR_LEN);
... etc
我忘了提及,分配和訪問必須在一個循環中執行(因此事先聲明) – 2011-05-02 01:33:50
怎樣才能用沒有malloc的指針來完成? – 2011-05-02 01:35:00
爲什麼不使用這樣的:
const char * string;
...
string = "words";
printf("%s",string);
(或你的問題不明確)
+1:同意。這回答了所述的問題。如果不合適,那麼這個問題需要澄清。 – 2011-05-02 01:42:19
什麼是錯了'字符*'? (好吧,除了它應該是一個'const char *'。) – 2011-05-02 01:38:08
使用'const char *'只是一個好的形式嗎?還是有必要?既然它被設置爲「單詞」,它不能改變,我明白這一點,但爲什麼要添加'const'? – 2013-01-15 20:53:37