[英]2d array, using calloc in C
我正在嘗試創建2D字符數組到字符存儲行。 例如:
lines[0]="Hello";
lines[1]="Your Back";
lines[2]="Bye";
由於行必須動態,所以我一開始不知道需要多少行。 這是我的代碼:
int i;
char **lines= (char**) calloc(size, sizeof(char*));
for ( i = 0; i < size; i++ ){
lines[i] = (char*) calloc(200, sizeof(char));
}
for ( i = 0; i < size; i++ ){
free(lines[i]);
}
free(lines);
我知道每行不能超過200個字符。 我不斷收到諸如“錯誤C2059:語法錯誤:'for'”之類的錯誤。 關於我做錯了什么的任何想法?
沒有代碼不在函數中。
您不能只是將任意語句放在C和C ++中的函數之外。 不過,您可以使用函數來初始化變量:
char** init_lines() {
char** ln = /* ... */;
// your allocations etc. here
return ln;
}
char** lines = init_lines();
您用C ++標記了問題-為什么不為此使用std::vector<std::vector<char> >
?
查看編譯器錯誤,似乎您在其中一個for循環之前缺少分號-您在此處發布的代碼似乎運行得很好。
首先,執行第一個calloc
浪費時間,因為您立即使用第一個for
循環對其進行了初始化。
話雖如此,您顯示的代碼完全沒有錯。
因此,您的錯誤可能出在其他地方,或者那不是您發布的代碼。 我建議您發布確切的錯誤消息,以及經過剪切粘貼的違規行的副本,並在上下文的兩側各行十行。 這將使我們的生活變得輕松多了。
錯誤:
syntax error : 'for' syntax error : missing ')' before ';'
syntax error : missing ';' before '<' missing type specifier - int assumed
如您的評論之一所示,通常是由不平衡的括號引起的。 檢查所有(
和)
字符,以確保它們在數量和位置上均相等。 可能是因為您在for
之前的語句中缺少)
,但這只是有根據的猜測,因為您發布的代碼沒有這個問題。
在這里,我認為是不同的。 可能有用。 char指針或char double在編譯期間隱式定義。 因此,它不需要顯式定義,並且這樣做可以顯示語法錯誤。 如果不希望用NULL初始化垃圾值,請嘗試使用char指針而不用calloc初始化。 就像使用calloc一樣,您發現沒有什么不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.