可能重複:
string literal in c
Assigning strings to arrays of charactersC字符串數組
我得到了下面的代碼:
char result[3][4];
result[0] = "horse";
result[1] = "pig";
result[2] = "chicken";
它不會編譯說Incompatible types in assignment
。我究竟做錯了什麼?
可能重複:
string literal in c
Assigning strings to arrays of charactersC字符串數組
我得到了下面的代碼:
char result[3][4];
result[0] = "horse";
result[1] = "pig";
result[2] = "chicken";
它不會編譯說Incompatible types in assignment
。我究竟做錯了什麼?
char是單個字符,例如'h'
你想要的是字符串指針。
char *result[3];
記住,如果你做這種方式,您將無法更改單個字符串的內容(這是一個常數,並存儲在不同的地方。)
你也可以這樣做這樣
char *result[3];
result[0] = malloc(100 * sizeof(char));
strcpy(result[0],"horse"); // or strncpy(result[0],5,"horse")
etc
在OP的例子中`result`是一個`char [3] [4]`,而result [i]`因此是`char [4]`而不是`char`。 – peoro 2011-01-22 18:40:39
你可能想:
char* result[3];
result[0] = "horse";
result[1] = "pig";
result[2] = "chicken";
你做錯了兩個什麼原因。
首先,你不能「指定」的字符串的字符數組一樣,你不得不使用,例如,strcpy
。
其次,你的陣列尺寸也錯了,char array[4]
顯然不會持有"horse"
或"chicken"
,所以如果你糾正我上述所說的(這將編譯它甚至不會工作,但你會寫信給你的內存不應該寫入)。
更正後的代碼所做的是不是存儲char數組本身,而是存儲指向內存中存儲位置的指針,其中"horse"
等等。因此,它只存儲一個地址,然後您可以使用=
運算符。
數組是不可修改的lvalues
即不能分配給他們。
您需要使用指針數組。更改char result[3][4];
到
你要增加的話,大小,並用strcpy()
:
char result[3][8]; // at least 8!
strcpy(result[0], "horse");
strcpy(result[1], "pig");
strcpy(result[2], "chicken");
char result[3][10] = {
"horse",
"pig",
"chicken",
}
或
char result[3][10];
strcpy_s(result[0], 10, "horse");
strcpy_s(result[1], 10, "pig");
strcpy_s(result[2], 10, "chicken");
您可以指定一個字符串(如:"horse"
)只有當你聲明它時,纔會到char
數組。
char array[4] = "str"; // is OK
char array2[4];
array2 = "str"; // is NOT OK.
你可以這樣做:
char result[3][4] = { "horse", "pig", "chicken" };
但警告:"horse"
和"chicken"
比char[4]
更長。
如果你想分配一個字符串到一個已經宣佈char
數組,你將不得不使用strcpy
(或其他類似的功能)。
另一種解決方案,許多建議是聲明result
爲char指針數組:char *result[3];
,但如果你不喜歡這個,你將不會被允許修改由result[i]
指向的字符串的內容。
以下作品更好: 炭結果[3] [10] = { 「馬」, 「豬」, 「雞肉」};
此外,具有記住,「雞」,「馬」具有多於4個字符,並因此導致[3] [4](在[4]的部分)不是正確的。
這不會起作用,因爲聲明爲char result[3][4]
result
並用作result[0]
會導致類似東西:char * const result
。常量指針不允許任何賦值,它已經包含指向「[4]
」列的數組的指針。
那麼這些都是char *而不是char [4] ... – leppie 2011-01-22 18:38:27
@birryree:那個問題有自己可能的重複http://stackoverflow.com/questions/579734/assigning-strings-to-arrays-of-字符 – 2011-01-22 19:42:54