一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C語言中字符數(shù)組的初始化與賦值,字符串相關(guān)函數(shù)!

 蘭寶888 2019-09-29

1.字符數(shù)組初始化

在C語言中,字符串是當(dāng)做字符數(shù)組來處理的;所以字符串有兩種聲明方式,一種是字符數(shù)組,一種是字符指針。

(1)直接逐個(gè)初始化字符數(shù)組:字符數(shù)組的初始化,最容易理解的方式就是逐個(gè)字符賦給數(shù)組中各元素。

char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};

注意:如果花括號(hào)中提供的字符個(gè)數(shù)大于數(shù)組長度,則按語法錯(cuò)誤處理;若小于數(shù)組長度,則只將這些字符數(shù)組中前面那些元素,其余的元素自動(dòng)定為空字符(即'\0' )。

(2)用字符串常量來初始化字符數(shù)組:在c語言中,將字符串作為字符數(shù)組來處理。因此可以使用字符串來初始化字符數(shù)組。

char str[]={"I am happy"};

也可以省略花括號(hào):

char str[]="I am happy";

但是,上述這種字符數(shù)組的整體賦值只能在字符數(shù)組初始化時(shí)使用,不能用于字符數(shù)組的賦值,字符數(shù)組的賦值只能對(duì)其元素一一賦值,下面的賦值方法是錯(cuò)誤的。

char str[];

str="I am happy";//錯(cuò)誤,字符數(shù)組的賦值只能按元素一一賦值(錯(cuò)誤的原因: C語言并沒有提供可以直接操作字符串的運(yùn)算符;“=”可以用于其他數(shù)據(jù)類型的賦值,但是不可以直接給字符串賦值。

這是字符數(shù)組初始化的兩種方式,但是這兩種方式其實(shí)是不等價(jià)的;他們的數(shù)組長度不同。

#include<stdio.h>

int main() 

{

char parr[] = "zifuchuanshuzu";  

//與charr[]不等價(jià) 

char charr[] = { 'z','i','f','u','c','h','u','a','n','s','h','u','z','u' };  

//等價(jià)于charr[]  

char charr_test[] = { 'z','i','f','u','c','h','u','a','n','s','h','u','z','u' ,'\0'};

int num_parr = sizeof(parr);

int num_charr = sizeof(charr); 

int num_charr_test = sizeof(charr_test);

printf("The parr[] is : %s\n", parr); 

printf("The size of parr[] is : %d\n\n", num_parr);

//與charr[]不等價(jià)

printf("The charr[] is : %s\n", charr); 

printf("The size of charr[] is : %d\n\n", num_charr);

//等價(jià)于charr[]

printf("The charr_test[] is : %s\n", charr_test);

printf("The size of charr_test[] is : %d\n", num_charr_test); 

return 0;

}

運(yùn)行結(jié)果:

從結(jié)果可以看到第二種初始化方式,打印的結(jié)果有問題,但是字符數(shù)量沒有問題。這是因?yàn)樽址J(rèn)是以’\0’結(jié)束的,第二種初始化方式中沒有’\0’,而我們以字符串方式打印,所以出錯(cuò); 

第一種是系統(tǒng)自動(dòng)添加了’\0’;我們可以看到其字符數(shù)量是15(與第三種相同)。

(3)字符指針:在C語言中我們也可以使用字符指針來存儲(chǔ)字符串。

  字符指針初始化:

char* str="zifuchuanshuzu";

C語言對(duì)字符串常量是按照字符數(shù)組來處理的,在內(nèi)存中開辟了一個(gè)字符數(shù)組用來存放字符串常量,程序在定義字符串指針變量str時(shí),只是把字符串首地址賦值給str。 

輸出:

printf("%s\n",str);

系統(tǒng)首先輸出str指向的字符,而后自加1,直至遇到’\0’;與數(shù)組的輸出方式相同。

 字符指針的賦值:

char *str;

str="zifuzhizhen";

對(duì)于字符指針這種賦值方式是正確的。與字符數(shù)組不同。

2.字符串處理函數(shù):strcpy函數(shù)和strcat函數(shù)

(1)char *strcpy(char *dest,const char*src);

頭文件:string.h和stdio.h 

功能:將src地址開始且包含’\0’結(jié)束符的字符串復(fù)制到以dest開始的空間。 

注: 字符數(shù)組dest必須是數(shù)組名形式,src可以是數(shù)組名也可以是字符串常量 可以用strcpy將src的前若干個(gè)字符復(fù)制到字符數(shù)組中.

(2)char *strcat(char *dest,const char *src);

頭文件:string.h 

功能: 把src中的內(nèi)容復(fù)制到dest結(jié)尾處(覆蓋’\0’)。 

注: src和dest內(nèi)存區(qū)域不可以重疊,dest必須有足夠的空間來容納src; 字符數(shù)組dest必須是數(shù)組名形式,src可以是數(shù)組名也可以是字符串常量; 返回指向dest的指針;

#include<stdio.h>

#include<string.h>

int main() 

{

//利用strcpy為字符數(shù)組賦值

char parr[40];

strcpy(parr,"zifuchuanshuzu");

printf("The parr[] is : %s\n\n", parr);

//賦值字符串的一部分

char charr[] = "_test_strcat_redundance";

char tarr[13];

charr[12] = '\0';

//復(fù)制charr的前12個(gè)字符

 strcpy(tarr, charr);

printf("The tarr[] is : %s\n\n", tarr);

//字符串鏈接

strcat(parr, charr);

printf("The parr and tarr[] is : %s\n", parr);

return 0;

}

結(jié)果:

3.總結(jié)

(1)在C語言中并沒有直接提供字符串的操作,其字符串操作是通過轉(zhuǎn)化為字符串完成的,例如字符數(shù)組,字符指針,其本質(zhì)是對(duì)字符的操作。

(2)作為字符數(shù)組,與普通數(shù)組相同,區(qū)別在于它的每一個(gè)元素是一個(gè)字符,所以不可以直接用“=”對(duì)字符數(shù)組賦值(parr[]=”zhifushuzu”,是錯(cuò)誤的賦值方式),但是可以對(duì)每一個(gè)元素進(jìn)行賦值(charr[12]=’\0’是正確的)。

(3)字符串一定是以’\0’結(jié)尾的;字符數(shù)組和字符指針我們當(dāng)做字符串整體初始化,系統(tǒng)會(huì)自動(dòng)添加’\0’;對(duì)于字符數(shù)組,如果采用單個(gè)字符的方式進(jìn)行初始化或者賦值一定要考慮結(jié)束符’\0’.

(4)strcpy和strcat內(nèi)部也是對(duì)字符的操作,以‘\0’作為字符串結(jié)束的標(biāo)志。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩国产欧美日韩| 亚洲男人天堂成人在线视频| 国产欧美一区二区色综合| 国产自拍欧美日韩在线观看| 97人摸人人澡人人人超碰| 精品国产成人av一区二区三区| 精品欧美日韩一区二区三区| 日韩欧美国产高清在线| 在线日本不卡一区二区| 亚洲欧洲精品一区二区三区| 国产日韩精品欧美综合区| 国产自拍欧美日韩在线观看| 日本人妻熟女一区二区三区| 久久午夜福利精品日韩| 国产成人精品一区二区在线看| 国产日韩欧美专区一区| 国产超薄黑色肉色丝袜| 日本三区不卡高清更新二区| 麻豆tv传媒在线观看| 麻豆印象传媒在线观看| 国产午夜精品亚洲精品国产| 黑人粗大一区二区三区| 99精品国产自在现线观看| 91欧美视频在线观看免费| 一区二区三区18禁看| 午夜国产成人福利视频| 成人精品欧美一级乱黄| 91蜜臀精品一区二区三区| 麻豆看片麻豆免费视频| 国产一级一片内射视频在线| 青青操日老女人的穴穴| 福利专区 久久精品午夜| 在线一区二区免费的视频| 91人妻丝袜一区二区三区| 果冻传媒在线观看免费高清| 亚洲欧美一二区日韩高清在线| 微拍一区二区三区福利| 又大又长又粗又猛国产精品| 久久99一本色道亚洲精品| 精品人妻一区二区三区四在线| 国产日韩综合一区在线观看|