字符數(shù)組

###字符數(shù)組的定義:有一定順序關(guān)系的若干個字符型變量的集合裳擎,就是字符數(shù)組拓巧∷孤担可以是一維的一死,也可以是多維的肛度。字符數(shù)組具有普通數(shù)組的性質(zhì),又有一些特殊的性質(zhì)投慈;

###字符數(shù)組的初始化:

(1):和普通數(shù)組相同承耿,逐個為數(shù)組元素賦值:

char ? ch[4]={'a','b','c','\0'};

(2):使用字符串常量來賦值:

char ? ch[10]={"abcdefghjk"};相當(dāng)于: char ?ch[10]={'a','b','c','d','e','f','g','h','j','k','\0'};

注意:用字符串來初始化字符數(shù)組冠骄,字符串結(jié)尾以“\0”結(jié)尾,上面只有10個字母加袋,但字符串隱含了結(jié)束標(biāo)志\0凛辣,相當(dāng)于11個字母,越界了职烧。

例:

#include#includeint main()

{

char ch[10] ={"abcdefghk"};

printf("%lu\n",sizeof(ch));

for (int i=0;i<sizeof(ch)/sizeof(char);i++)

printf("%c\n",ch[i]);

return 0;

}

此時ch[10]中包含了11個字母(多了 "\0"),所以程序會報錯,因為越界溢出,所以在 char[]={“ ”}中只能存放9個字母乾蛤;


###字符串

在C語言中翅睛,嚴(yán)格的講是沒有字符串的,不管是原生的還是構(gòu)造的數(shù)據(jù)類型足删,但是為何在程序員的心里是有字符串這個類型的寿谴,首先,我們知道C語言是一個面向過程的一門語言失受,而基于C語言更高級的語言O(shè)jective-C是面向?qū)ο蟮恼Z言讶泰,而在高級語言中有字符串這一類型,所以拂到,在C語言中痪署,程序員可以通過字符數(shù)組模擬字符串。字符串指的是以'\0'作為結(jié)束字符的一組字符兄旬,因此把一個字符串存入數(shù)組時惠桃,也把“\0”存入數(shù)組,并以此作為該字符串是否結(jié)束的標(biāo)志辖试;

注意:字符串變量與一般的字符數(shù)組有一定的區(qū)別辜王;

字符串常見處理函數(shù)

1.strlen(s)

頭文件:string.h

函數(shù)原型:size_t strlen(const char *s)

功能:求字符串的長度(不含字符串結(jié)束標(biāo)志'\0')。

參數(shù):s為字符串

返回值:字符串的長度(不含字符串結(jié)束標(biāo)志'\0')

strlen 函數(shù)測試字符串的實際長度(不包括'\0')罐孝,并將該長度作為函數(shù)的值返回呐馆。函數(shù)參數(shù)“字符串”可以使字符串常量,也可以是字符變量莲兢,一般形式:int ?length=strlen;

例:

#include <stdio.h>

#include <string.h>

int main()

{

char ch_1[ ]="abc\n";

char ch_2[ ]=" ";

printf("ABC的長度:%d\n",strlen("ABC"));

printf("ch_1的長度:%d\n",strlen(ch_1));

printf("ch_2的長度:%d\n",strlen(ch_2));

return 0;

}

結(jié)果:

ABC的長度:3

ch_1的長度:4

ch_2的長度:0

”abc\n“長度為4汹来,而非5,‘\n’被看成一個字符改艇∈瞻啵” “長度為0,是因為他是空字符串沒有有效字符谒兄,所以長度為0摔桦;

2.strcpy(s1,s2)

頭文件:string.h

函數(shù)原型:char *strcpy(char *dest,const char *sre)

功能:字符串拷貝

參數(shù):src為源串的起始地址,dest為+目標(biāo)串的起始地址。

返回值:目標(biāo)串的起始值

strcpy函數(shù)用于實現(xiàn)邻耕,iangge字符串的拷貝鸥咖,一般形式:strcpy(字符串1,字符串2)

其中兄世,字符串1必須是字符串變量啼辣,而不能是字符串常量。strcpy函數(shù)把字符串2的內(nèi)容完全復(fù)制到字符串1中御滩,而不管字符串1中原先存放的是什么鸥拧,復(fù)制后,字符串2保持不變削解;

例:

#include <stdio.h>

#include <string.h>

int main()

{

char str[10],str2[10];

strcpy(str,"abcdefg"); ?//將字符串常量拷貝給字符串變量str

strcpy(str2,str); //再將字符串變量str拷貝到字符串變量str2

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

printf("str2:%s\n",str2);

return 0;

}

注意:由于字符串是字符數(shù)組住涉,所以兩個字符串復(fù)制不通過賦值運算進(jìn)行。

3.strcat(s1,s2)

頭文件:string.h

函數(shù)原型:char *strcat(cgar *dest,const char *src)

功能:把字符串src鏈接到字符串dest 后面

參數(shù):src為源串的起始地址钠绍,dest為目標(biāo)串的起始地址

返回值:目標(biāo)串的起始地址

strcat ?函數(shù)可以將兩個字符串鏈接起來舆声,形成一個新的字符串。strcat函數(shù)的調(diào)用形式為:strcat(字符數(shù)組1柳爽,字符數(shù)組2);功能是將字符串2接到字符串1的后面

例:

#include <stdio.h>

#include <string.h>

int main()

{

char ? s1[50]="Good";

char ? ?s2[]="morning";

strcat(s1,s2);//鏈接字符串

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

return 0;

}

結(jié)果:Goodmoring

4.strcmp(s1,s2)

頭文件:string.h

函數(shù)原型:int ? ?strcmp(const ? char ?*s1,const ? ? char ? *s2)

功能:按照ASCII碼順序比較字符串s1和字符串s2的大小

參數(shù):s1為字符串起始地址媳握,dest為目標(biāo)串的起始地址

返回值:比較結(jié)果

字符串1=字符串2,返回值=0磷脯;

字符串2>字符串2蛾找,返回值>0;

字符串2<字符串2,返回值<0;

字符串比較可使用strcmp函數(shù)赵誓,strcmp函數(shù)的調(diào)用形式為:strcmp(字符串1打毛,字符串2);

如果字符串1和字符串2完全相等,函數(shù)返回0俩功;如果字符串1大于字符串2幻枉,函數(shù)返回一個正整數(shù);

如果字符串1小于字符串2诡蜓,函數(shù)返回一個負(fù)整數(shù)熬甫。

字符串比較的規(guī)則是:將兩個字符串從左至右逐個字符按照ASCII碼進(jìn)行比較,直到出現(xiàn)不相等的字符或遇到‘\0’為止蔓罚。若果所有字符都相等椿肩,則這兩個字符串相等。如果出現(xiàn)不相等的字符豺谈,以第一個不相等字符的比較結(jié)果為準(zhǔn)郑象。

例:

#include <stdio.h>

#include <string.h>

int main()

{

? char s1[100],s2[100];

int i;

scanf("%s%s",s1,s2);

i=strcmp(s1,s2);

if(i==0)

{

printf("string1==string2");

}

else if(i>0)

{

printf("string1>string2");

}

else

{

printf("string1>string2");

}

printf("\n");

return 0;

}


5.strstr(s1,s2)

strstr(s1,s2) 函數(shù)收索一個字符串在另一個字符串中的第一次出現(xiàn)。如果匹配s2則返回首次出現(xiàn)s2位置的指針茬末,否則則返回null厂榛。調(diào)用strstr函數(shù)的一般形式:strstr(被收索的字符串1,被收索的字符串search);

如果search為數(shù)字,則收索與數(shù)字匹配的ASCII碼值得字符

注意:該函數(shù)對大小寫敏感噪沙。如需進(jìn)行大小寫不敏感的收索,請使用stristr().

例:

#include <stdio.h>

#include <string.h>

int main()

{

char str[]="I like monkey,you like cat!";

char serch[]="like";

char *s=strstr(str,search);

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

return 0;

}

運行結(jié)果:Like monkey,you like cat!

6.strchr(s,c)

收索字符串s中首次出現(xiàn)字符c的位置吐根。返回首次出現(xiàn)c的位置的指針正歼,如果s中不存在c則返回null。

調(diào)用strchr的一般形式:strchr(被搜索的字符串s,被搜索的字符串c);

strchr和strchr用法一致拷橘,只是strstr是查找字符串局义,strchr是查找單個字符;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冗疮,一起剝皮案震驚了整個濱河市萄唇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌术幔,老刑警劉巖另萤,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诅挑,居然都是意外死亡四敞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門拔妥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忿危,“玉大人,你說我怎么就攤上這事没龙∑坛” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵硬纤,是天一觀的道長解滓。 經(jīng)常有香客問我,道長筝家,這世上最難降的妖魔是什么伐蒂? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮肛鹏,結(jié)果婚禮上逸邦,老公的妹妹穿的比我還像新娘。我一直安慰自己在扰,他們只是感情好缕减,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芒珠,像睡著了一般桥狡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天裹芝,我揣著相機與錄音部逮,去河邊找鬼。 笑死嫂易,一個胖子當(dāng)著我的面吹牛兄朋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怜械,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颅和,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缕允?” 一聲冷哼從身側(cè)響起峡扩,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎障本,沒想到半個月后教届,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡驾霜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年巍佑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寄悯。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡萤衰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猜旬,到底是詐尸還是另有隱情脆栋,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布洒擦,位于F島的核電站椿争,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏熟嫩。R本人自食惡果不足惜秦踪,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掸茅。 院中可真熱鬧椅邓,春花似錦、人聲如沸昧狮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗鸣。三九已至合住,卻和暖如春绰精,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背透葛。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工笨使, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僚害。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓硫椰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贡珊。 傳聞我的和親對象是個殘疾皇子最爬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容