1字符數(shù)組初始化及傳遞
字符數(shù)組的定義方法與前面介紹的一維數(shù)組類似.例如,
char c[10];
字符數(shù)組的初始化可以采用以下方式.
(1)對(duì)每個(gè)字符單獨(dú)賦值進(jìn)行初始化.例如,
c[O]='I';c[1]=' ' ;c[2]='a';c[3]='m';c[4]=' ';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';
(2)對(duì)整個(gè)數(shù)組進(jìn)行初始化.例如,
char c[10]='T",'a','m';'h','a','p';'p','y}
但工作中一般不用以上兩種初始化方式,因?yàn)樽址麛?shù)組一般用來存取字符串.通常采用的初始化方式是char c[10]=“hello”.因?yàn)镃語言規(guī)定字符串的結(jié)束標(biāo)志為’0’,而系統(tǒng)會(huì)對(duì)字符串常量自動(dòng)加一個(gè)o’,為了保證處理方法一致,一般會(huì)人為地在字符數(shù)組中添加’\0’,所以字符數(shù)組存儲(chǔ)的字符串長(zhǎng)度必須比字符數(shù)組少1字節(jié).例如, char c[10]最長(zhǎng)存儲(chǔ)9個(gè)字符,剩余的1個(gè)字符用來存儲(chǔ)’\0’.
【例】字符數(shù)組初始化及傳遞
#include <stdio.h>
vold print(char c[])
(
int i=0;
while(c[i])
{
printf("%c" ,c[i]);
i++;
)
printf("\n"");
}
//字符數(shù)組存儲(chǔ)字符串,必須存儲(chǔ)結(jié)束符'\O'
int main()
{
char c[5]={h,e,T,T,o;
char d[5]="how";
printf("%s\n",c);//會(huì)發(fā)現(xiàn)打印了亂碼
printf("%s\n",d);
print(d);
return 0;
}
為什么會(huì)打印出亂碼?
hello后面沒有’\0’,打印字符串讀取時(shí)未結(jié)束
為什么改成"hello"也不行
char c[5]=“hello”;正常是應(yīng)該加上一個(gè)’\0’,但是因?yàn)閿?shù)組長(zhǎng)度不夠.無法填上,所以改成char c[6]就可以了文章來源:http://www.zghlxwxcb.cn/news/detail-822874.html
2.scanf 讀取字符串
int main()
{
char c[10];
char d[10l;
scanf("%s",c);
printf("%s\n",c);
scanf("%s%s",c,d);
printf("c=%s,d=%s\n",c,d);
return O;
}
scanf通過%s讀取字符串,對(duì)c和d分別輸入"are"和"you”(中間加一個(gè)空格) , scanf在使用%s讀取字符串時(shí),會(huì)忽略空格和回車(這一點(diǎn)與%d和%f類似).
輸入順序及執(zhí)行結(jié)果如下.文章來源地址http://www.zghlxwxcb.cn/news/detail-822874.html
hello
hello
are you
c=are, d=you
到了這里,關(guān)于【C語言基礎(chǔ)考研向】10 字符數(shù)組初始化及傳遞和scanf 讀取字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!