[英]Can't initialize char array to a variable in c
使用Turbo c ++初始化char變量數組時,獲取錯誤代碼如下
int gd=DETECT,gm,i,d=0,x,y;
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","\0"};
initgraph(&gd,&gm,"..\\BGI");
但是在用於初始化s[12][3]
,初始化器列表可以正常工作!
"3"
和'3'
之間有區別。
"3"
是字符串文字 '3'
是一個字符常量(對於nitpick:整數字符常量) 在這里,要初始化一個char
類型的數組,您似乎需要(用括號括起來的)字符常量列表,而不是字符串。
但是在使用s [12] [3]時效果很好
好了,您正在初始化arrays 。
故事的寓意:如有疑問,請檢查數據類型!!
您正在嘗試存儲char
,而不是字符串,那么為什么要使用雙引號?
"a"
是字符串, 'a'
是字符。
您實際要存儲的是字符串,為此,您需要一個2D數組,如下所示:
s[12][3] = {"3","4","5","6","7","8","9","10","11","12","1","2"};
您不能將10表示為單個字符,我的意思是'10'
不存在。 對於數字,單個字符的范圍是0到9。 因此,您需要10的字符串,例如"10"
。
現在,您需要將數組的第二維設置為3,因為字符串"10"
(例如)是一個以null終止的字符串,因此其實際內容為2個字符,再加上一個以null終止符為單位的字符串,則為3 。
PS:Turbo-C ++是古老的編譯器。 確實可以升級到GCC或其他任何東西。
您需要更改:
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","\0"};
至
char s[13]={'3','4','5','6','7','8','9','10','11','12','1','2','\0'};
由於char數組元素應為char文字而不是字符串文字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.