因?yàn)镃語(yǔ)言中,數(shù)組初始化時(shí),如果給定的初始值個(gè)數(shù)小于數(shù)組長(zhǎng)度,那么后面的剩余元素將被自動(dòng)初始化為0,也就是字符串的結(jié)束標(biāo)志'\0'
成都創(chuàng)新互聯(lián)主營(yíng)新河網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,新河h5重慶小程序開(kāi)發(fā)公司搭建,新河網(wǎng)站營(yíng)銷推廣歡迎新河等地區(qū)企業(yè)咨詢
strcmp()函數(shù)就是用于查找兩個(gè)以'\0'結(jié)束的字符串中的第一個(gè)不相同的字符的ASCII值之差,如果將數(shù)組長(zhǎng)度改為5,那么strcmp函數(shù)在前5個(gè)字符中找不到結(jié)束標(biāo)志,又因?yàn)槌绦虿粫?huì)對(duì)邊界進(jìn)行檢查,所以會(huì)一直找下去,而此時(shí),早已越界,所以會(huì)輸出不可預(yù)見(jiàn)的結(jié)果。
strcpy(p+strlen(q),r);表示從數(shù)組首地址偏移strlen(q),也就是從元素d所在的位置開(kāi)始復(fù)制
這時(shí)復(fù)制完后數(shù)組p的長(zhǎng)度為3+5=8(元素d被覆蓋)
strcat(p,q);表示從數(shù)組p的尾部進(jìn)行連接,這時(shí)數(shù)組p的長(zhǎng)度為8+3=11
而數(shù)組p在定義為char p[20],即請(qǐng)求連續(xù)開(kāi)辟20個(gè)char類型存儲(chǔ)單元,而每個(gè)char占一字節(jié),所以sizeof(p)等于20
還有問(wèn)題嗎
字符串超長(zhǎng),fgets讀了size-1個(gè)字符還沒(méi)有讀到'\n',就把已經(jīng)讀到的size-1個(gè)字符和一個(gè)'\0'字符存入字符數(shù)組,剩下的字符可以在下次調(diào)用fgets時(shí)繼續(xù)讀。
輸入asdfasdfasdf123,第一次fgets只取走了前10個(gè)字符,余下的df123被下一次fgets取走了。
另外,還有兩點(diǎn):
1)包含的是系統(tǒng)頭文件,建議用如下形式:
#include stdio.h
#include string.h
2)你這里fgets中size指定為11,而定義字符數(shù)組時(shí),大小卻為10,這樣會(huì)溢出的。 你這里運(yùn)行沒(méi)問(wèn)題是因?yàn)樽址麛?shù)組的數(shù)組名作參數(shù)時(shí)被自動(dòng)轉(zhuǎn)換為字符指針了。
基本上兩種:字符數(shù)組和字符指針。字符數(shù)組名是常量,字符指針是變量
1、用字符數(shù)組:一個(gè)一維字符數(shù)組存儲(chǔ)一個(gè)字符串,二維數(shù)組存儲(chǔ)多個(gè)字符串。如:
int i;
char s1[]="abc",s2[][80]={"ABCD","XYZ"},s3[80];
scanf("%s",s3);
printf("%s,%s\n",s1,s3);
for(i=0;i2;i++)printf("%s\n",s2[i]);
2、用字符指針:字符指針指向一個(gè)字符串,字符指針數(shù)組處理多個(gè)字符串。如:
int i;
char *p1="abc",*p2[]={"ABCD","XYZ"},**p;
printf("%s\n",p1);
for(i=0;i2;i++)printf("%s\n",p2[i]);
p=p2;
for(i=0;i2;i++)printf("%s\n",*p++);
3、字符數(shù)組與字符指針配合一起使用:字符數(shù)組提供字符串的存儲(chǔ),處理字符串用字符指針
char s[80],*p;
p=s;
scanf("%s",p);
printf("%s",p);
在string.h中所有處理字符串函數(shù),對(duì)字符數(shù)組和字符指針都適用。
分享標(biāo)題:c語(yǔ)言字符處理函數(shù)怎么用 C語(yǔ)言字符處理
網(wǎng)站鏈接:http://m.kartarina.com/article38/hgpopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、手機(jī)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站策劃、定制開(kāi)發(fā)、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容