2011-05-02 56 views
2

字符數組指針我想下面這兩個聲明之間的交叉:定義與大小

char string[6]; 
char * string; 

我需要一個指針具有固定的大小,我想用malloc的東西這麼簡單。

所有這個字符數組需要做的是被分配一個值並讓它被一個函數檢索,如下所示。 (但是,在循環中因此是單獨的聲明)執行此操作的最佳方法是什麼?

string = "words"; 
printf("%s",string); 
+1

什麼是錯了'字符*'? (好吧,除了它應該是一個'const char *'。) – 2011-05-02 01:38:08

+0

使用'const char *'只是一個好的形式嗎?還是有必要?既然它被設置爲「單詞」,它不能改變,我明白這一點,但爲什麼要添加'const'? – 2013-01-15 20:53:37

回答

2

既然你現在說,你不能使用@ nightcracker的解決方案,我認爲你需要使用strncpy()分配給字符串。

char string[6]; 
/* .... loop code */ 
strncpy(string, "words", 6); 
printf("%s", string); 

我想,在實際的程序中,你將不會被使用字符串字面量,因此對於strncpy()的需要。

+1

這樣做,我希望避免它,但它看起來很隆重。 – 2011-05-02 01:38:09

3

定義一個常數陣列的大小被通過初始化計數:

const char string[] = "words"; 

如果只想一個指針的存儲器的固定大小量的小,只使用它是這樣的:

const int STR_LEN = 10; 
char str[STR_LEN]; 

... loop, etc 

strncpy(string, "1234567890", STR_LEN); 

... etc 
+0

我忘了提及,分配和訪問必須在一個循環中執行(因此事先聲明) – 2011-05-02 01:33:50

+0

怎樣才能用沒有malloc的指針來完成? – 2011-05-02 01:35:00

1

爲什麼不使用這樣的:

const char * string; 
... 
string = "words"; 
printf("%s",string); 

(或你的問題不明確)

+0

+1:同意。這回答了所述的問題。如果不合適,那麼這個問題需要澄清。 – 2011-05-02 01:42:19