c語言結構體中的一個char數組怎么賦值?
c語言結構體中的一個char數組怎么賦值?
(1)用字符常量逐個初始化數組。例如:
char a[8]={\’i\’,\’l\’,\’o\’,\’v\’,\’e\’,\’y\’,\’o\’,\’u\’};
把8個字符依次分別賦給c[0]~c[7]這8個元素。
如果在定義字符數組時不進行初始化,則數組中各元素的值是不可預料的。
如果花括號中提供的初值個數(即字符個數)大于數組長度,則出現語法錯誤。
如果初值個數小于數組長度,則只將這些字符賦給數組中前面那些元素,其余的元素自動定為空字符(即\’\\0\’)。
如果提供的初值個數與預定的數組長度相同,在定義時可以省略數組長度,系統(tǒng)會自動根據初值個數確定數組長度。
例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o\’,\’g\’,\’r\’,\’a\’,\’m\’};
這時c數組的長度自動定為9。
也可以定義和初始化一個二維字符數組,例如:
char diamond[5][5]={{\’\’,\’\’,\’#\’},{\’\’,\’#\’,\’\’,\’#\’},{\’#\’,\’\’,\’\’,\’\’,\’#\’},
{\’\’,\’#\’,\’\’,\’#\’},{\’\’,\’\’,\’#\’}};用它代表一個菱形的平面圖形。
(2)字符串常量初始化數組。例如:
char c[]={‘c’,‘’,‘p’,‘r’,‘o\’,\’g\’,\’r\’,\’a\’,\’m\’};
可寫為:char c[]={\”C program\”};
或去掉{}寫為:char c[]=\”C program\”;
注意:此時數組c的長度不是9,而是10。
因為字符串常量的**由系統(tǒng)加上一個\’\\0\’。上面的初始化與下面的初始化等價。
char c[]={‘c’,‘’,‘p’,‘r’,‘o\’,\’g\’,\’r\’,\’a\’,\’m\’,\’\\0\’};
擴展資料:
其定義的一般形式是:char數組名[數據長度]
例如:
char c[10];
c[0]=\’I\’;c[1]=\’\’;c[2]=\’l\’;c[3]=\’o\’;c[4]=\’v\’;c[5]=\’e\’;c[6]=\’\’;c[7]=\’y\’;c[8]=\’o\’;c[9]=\’u\’;
以上定義了c為字符數組,包含10個元素。
由于字符型數據是以整數形式(ASCII代碼)存放的,因此也可以用整型數組來存放字符數據,例如:
int c[10];
但這時每個數組元素占2個字節(jié)的內存單元,浪費存儲空間。
字符數組也可以是二維或多維數組,例如:
char c[5][10];
即為二維字符數組。
初始化
字符數組的初始化與數值型數組初始化沒有本質區(qū)別。
但它除了可以逐個給數組元素賦予字符外,也可以直接用字符串對其初始化。
輸入輸出
字符數組的輸入
(1)用getchar()或scanf()的\’%c\’格式符對數組進行字符賦值。例如,對于數組a[10]:用getchar()賦值:
for(i=0;i<10;i++)
a<i>=getchar();
用scanf()賦值:
for(i=0;i<10;i++)
scanf(\”%c\”,&a<i>);
(2)用scanf()的\’%s\’格式對數組賦值。還是對于數組a[10]:
scanf(\”%s\”,a百科);
或
scanf(\”%s“,&a[0]);
輸入”C program“并回車時,a數組會自動包含一個以”\\0“結尾的字符串”C program“。
字符數組的輸出
(1)用putchar()或printf()的‘%c’格式符對數組進行字符賦值。例如,對于數組a[10]:用putchar()賦值:
for(i=0;i<10;i++)
a<i>=putchar();
用printf()賦值:
for(i=0;i<10;i++)
printf(\”%c\”,a<i>);
輸出結果為:
c program
(2)用printf()的\’%s\’格式對數組賦值。
char[]數組該如何賦值
定義一個數組char a[10];怎么給這個數組賦值呢?1、定義的時候直接用字符串賦值char a[10]=\”hello\”;注意:不能先定義再給它賦值,如char a[10]; a[10]=\”hello\”;這樣是錯誤的!2、對數組中字符逐個賦值char a[10]={\’h\’,\’e\’,\’l\’,\’l\’,\’o\’};3、利用strcpychar a[10]; strcpy(a, \”hello\”);易錯情況:1、char a[10]; a[10]=\”hello\”;//一個字符怎么能容納一個字符串?況且a[10]也是不存在的!2、char a[10]; a=\”hello\”;//這種情況容易出現,a雖然是指針,但是它已經指向在堆棧中分配的10個字符空間,現在這個情況a又指向數據區(qū)中的hello常量,這里的指針a出現混亂,不允許!main() { char s[30]; strcpy(s, \”Good News!\”); /*給數組賦字符串*/ . } 上面程序在編譯時, 遇到char s[30]這條語句時, 編譯程序會在內存的某處留出連續(xù)30個字節(jié)的區(qū)域, 并將**個字節(jié)的地址賦給s。當遇到strcpy( strcpy 為Turbo C2.0的函數)時, 首先在目標文件的某處建立一個\”Good News!/0\” 的字符串。
其中/0表示字符串終止, 終止符是編譯時自動加上的, 然后一個字符一個字符地**到s所指的內存區(qū)域。
因此定義字符串數組時, 其元素個數至少應該比字符串的長度多1。
怎么給char數組賦值
cha
char數組怎么賦值
如圖public?static?void?main(String[]?args)?{?char[]?charArray=new?char[]{24635,35009};?String?str=new?String(charArray);?System.out.println(str);?}