第4章數(shù)組第3講字符數(shù)組_第1頁(yè)
第4章數(shù)組第3講字符數(shù)組_第2頁(yè)
第4章數(shù)組第3講字符數(shù)組_第3頁(yè)
第4章數(shù)組第3講字符數(shù)組_第4頁(yè)
第4章數(shù)組第3講字符數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三講

字符數(shù)組2printf(“Thisisastring.”);printf(“Thisison\ntwolines!”);printf(“For\”youwrite\\\”.”);Thisisastring.Thisisontwolines!For”youwrite\”.Thisisastring.\0Thisison\ntwolines!\0For“youwrite\“.\01.字符串都以\0結(jié)尾,字符串長(zhǎng)度比字符串中字符的個(gè)數(shù)多1。2.雙引號(hào)必須寫(xiě)成轉(zhuǎn)義字符\”,因?yàn)榫幾g器把雙引號(hào)看作字符串的結(jié)尾。3.反斜杠也必須用轉(zhuǎn)義字符\\表示,因?yàn)榉葱备芸偸潜硎巨D(zhuǎn)義字符的開(kāi)頭。字符串與數(shù)組1、字符串的本質(zhì)字符串是一種以’\0’結(jié)尾的字符數(shù)組。如:字符串常量"HELLO"的內(nèi)存映像

低地址高地址‘H’‘E’‘L’‘L’‘O’‘\0’字符串結(jié)束標(biāo)志0x480x450x4C0x4C0x4F02、字符數(shù)組

定義charc[10],ch[3][4];

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

逐個(gè)字符賦值用字符串常量Helloch[0]ch[1]ch[2]ch[3]ch[4]例;

charch[5]={'H'

,'e'

,'l'

,'l'

,'o'

};Boy\0\0ch[0]ch[1]ch[2]ch[3]ch[4]例;

charch[5]={'B'

,'o'

,'y'

};例;

charch[6]={"Hello"

};charch[6]="Hello"

;charch[

]=

"Hello"

;Hell\0och[0]ch[1]ch[2]ch[3]ch[4]ch[5]Boy\0\0ch[0]ch[1]ch[2]ch[3]ch[4]例;

charch[5]=

"Boy";3判斷下列賦值是否等價(jià):charstr[]="china";

①charstr[]={'c','h','i','n','a','\0'};

②charstr[]={"china"};③charstr[]={'c','h','i','n','a'};

charstr[10]="china";

①charstr[10]={'c','h','i','n','a'};注意:在用字符數(shù)組來(lái)存放某個(gè)字符串常量時(shí),如果要指定字符數(shù)組的大小,那么其大小至少要比字符串的長(zhǎng)度大1(多定義一個(gè)單元用于存放‘\0’)。451.字符串是個(gè)整體,默認(rèn)結(jié)束標(biāo)志’\0’,但C語(yǔ)言不存在字符串變量,必須用整型數(shù)組存放。因此訪問(wèn)形式與普通數(shù)組相同。charc1[10],c2[20];c1=“beijing”;c2=c1;charc[]=“beijing”;charc[30]={“beijing”};2.字符數(shù)組存儲(chǔ)字符串時(shí),其元素個(gè)數(shù)至少應(yīng)比字符串的字符數(shù)目多1。#include<stdio.h>voidmain(){charc1[5]="china";printf("%s",c1);}k=0;while(c1[k]!=‘\0’)k++;63.字符數(shù)組既可以用于存儲(chǔ)字符串,也可以用于存儲(chǔ)字符或字符變量。因此不能認(rèn)為字符串就是字符數(shù)組,或者字符數(shù)組就是字符串。charstr[]=“Hello”;//str長(zhǎng)度為6charchars[]={‘H’,’e’,’l’,’l’,’o’};//chars長(zhǎng)度為54.字符’a’僅需要一個(gè)字符變量就可以保存,但是字符串”a”需要有兩個(gè)元素的字符數(shù)組來(lái)保存,一個(gè)保存字符’a’,一個(gè)保存空字符’\0’。5.用%s輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名(地址)。charstr[]={“Hello”};printf(“%s\n”,str);charstr[]={“Hello”};printf(“%s”,str[0]);charstr[]={“Hello”};printf(“%s”,&str[0]);76.字符數(shù)組初始化:如果花括號(hào)字符個(gè)數(shù)大于數(shù)組長(zhǎng)度,則為語(yǔ)法錯(cuò)誤。charchars[3]={‘H’,’e’,’l’,’l’,’o’};7.如果花括號(hào)字符個(gè)數(shù)小于數(shù)組長(zhǎng)度,則其余元素自動(dòng)賦為’\0’。charchars[10]={‘H’,’e’,’l’,’l’,’o’};8.如果花括號(hào)字符個(gè)數(shù)與預(yù)定數(shù)組長(zhǎng)度相同,則定義時(shí)刻省略數(shù)組長(zhǎng)度,系統(tǒng)自動(dòng)根據(jù)初值個(gè)數(shù)確定數(shù)組長(zhǎng)度。charchars[]={‘H’,’e’,’l’,’l’,’o’};長(zhǎng)度自動(dòng)為589.可用scanf輸入一個(gè)字符串。charchars[6];scanf(“%s”,chars);charstr1[5],str2[5],str3[5];scanf(“%s%s%s”,str1,str2,str3);ChinaChina\0Howareyou?How\0\0are\0\0you?\0charstr[13];scanf(“%s”,str);Howareyou?How\0\0\0\0\0\0\0\0\0\0數(shù)組名就是地址!3、字符及字符串操作的常用函數(shù)

字符串的輸入格式:gets(字符數(shù)組)

//應(yīng)包含的.h文件為stdio.h

功能:從鍵盤(pán)輸入一以回車(chē)結(jié)束的字符串放入字符數(shù)組中,并自動(dòng)加'\0'說(shuō)明:輸入串長(zhǎng)度應(yīng)小于字符數(shù)組長(zhǎng)度例:charstr[80];

gets(str);當(dāng)輸入:I□love□china!↙(□表示空格,↙表示回車(chē))時(shí),str中的字符串將是:"Ilovechina!"gets函數(shù)9scanf函數(shù)格式:scanf(“%s”,字符數(shù)組)

//應(yīng)包含的.h文件為stdio.h

功能:從鍵盤(pán)輸入一以空格或回車(chē)結(jié)束的字符串放入字符數(shù)

組中,并自動(dòng)加'\0'說(shuō)明:輸入串長(zhǎng)度應(yīng)小于字符數(shù)組長(zhǎng)度例:charstr[80];scanf("%s",

str);

當(dāng)輸入:□□hello□china↙時(shí),str將是:"hello"

注意與gets的區(qū)別!10scanf函數(shù)的使用:

例:利用scanf函數(shù)可以連續(xù)輸入多個(gè)字符串,輸入時(shí),字符串間用空格分隔。

charstr1[40],str2[40],str3[40];scanf("%s%s%s",str1,str2,str3);

輸入:I□love□china!↙

例:使用%ns格式控制符限制輸入的字符個(gè)數(shù)。

charstr[10];scanf("%9s",str);getsscanf輸入的字符串中可包含空格字符輸入的字符串中不可包含空格字符只能輸入一個(gè)字符串可連續(xù)輸入多個(gè)字符串(使用%s%s…)不可限定字符串的長(zhǎng)度可限定字符串的長(zhǎng)度(使用%ns)遇到回車(chē)符結(jié)束遇到空格符或回車(chē)符結(jié)束//最多可讀入9個(gè)非空格字符到str中

str1:"I",str2:"love",str3:"china!"。11

字符串的輸出格式:puts(字符串地址)

//應(yīng)包含的.h文件為stdio.h

功能:向顯示器輸出字符串(輸出完,換行)說(shuō)明:如果是字符數(shù)組,則必須以'\0'結(jié)束puts函數(shù)例:

charstr[]="IloveChina!";puts(str);puts("IloveXJTU!");輸出結(jié)果:IloveChina!IloveXJTU!

12printf函數(shù)格式:printf("%s",字符串地址)

//應(yīng)包含的.h文件為stdio.h

功能:依次輸出字符串中的每個(gè)字符直到遇到字符'\0'

('\0'不會(huì)被輸出)例:

charname[]="JohnSmith";printf("Thenameis:%s\n",name);printf("Lastnameis:%s\n",&name[5]);

printf("Firstnameis:%s\n","John");輸出結(jié)果:Thenameis:JohnSmithLastnameis:SmithFirstnameis:John13

字符串的長(zhǎng)度格式:strlen(字符串地址)//應(yīng)包含的.h文件為string.h

功能:計(jì)算字符串長(zhǎng)度返值:返回字符串實(shí)際長(zhǎng)度,不包括'\0'在內(nèi)strlen函數(shù)例:

charstr[]="0123456789";printf("%d",strlen(str));printf("%d",strlen(&str[5]));//輸出結(jié)果為5//輸出結(jié)果為10問(wèn):

charstr[]="0123\0ABCDE";printf("%d",strlen(str));printf("%d",strlen(&str[5]));//輸出結(jié)果為4

//輸出結(jié)果為5

14strlen(&str[0]));問(wèn):對(duì)于以下字符串,strlen(s)的值為:(1)chars[10]={'A','\0','B','C','\0','D'};(2)chars[]=“\t\r\\\0will\n”;(3)chars[]=“\x41\070\n”;(4)chars[]=“\x41\419\n”;(5)chars[]=“\x41\182\n”;(6)chars[]=“\x41\082\n”;(7)chars[]=“\x412\182\n”;133154515

字符串的復(fù)制格式:strcpy(字符數(shù)組1,字符串2)//應(yīng)包含的.h文件為string.h功能:將字符串2拷貝到字符數(shù)組1中去返值:返回字符數(shù)組1的首地址說(shuō)明:字符數(shù)組1必須足夠大

拷貝時(shí)'\0'一同拷貝

不能使用賦值語(yǔ)句為一個(gè)字符數(shù)組賦值!strcpy函數(shù)例:

charstr1[20],str2[20];scanf("%s",str2);strcpy(str1,str2);例:

charstr1[20],str2[20];str1={"Hello!"};(x)str2=str1;(x)16

字符串的復(fù)制格式:strncpy(字符數(shù)組1,

字符串2,長(zhǎng)度n)

//應(yīng)包含string.h功能:將字符串2的前n個(gè)字符復(fù)制到字符數(shù)組1中去,并在

末尾加'\0'返值:返回字符數(shù)組1的首地址說(shuō)明:字符數(shù)組1必須足夠大strncpy函數(shù)例:

charstr[20];strncpy(str,"0123456789",5);printf("%s",str);輸出:0123417

字符串比較格式:strcmp(字符串1,

字符串2)//應(yīng)包含string.h頭文件功能:比較兩個(gè)字符串比較規(guī)則:對(duì)兩串從左向右逐個(gè)字符比較(ASCII碼),

直到遇到不同字符或'\0'為止返值:返回int型整數(shù)。a.若字符串1<字符串2,返回負(fù)整數(shù)

b.若字符串1>字符串2,返回正整數(shù)

c.若字符串1==字符串2,返回零說(shuō)明:字符串比較不能用“==”,必須用strcmp??!strcmp函數(shù)例:

strcmp(“abcd”,“abCD”);//將返回一正整數(shù);

strcmp(“1234”,“12345”);//將返回一負(fù)整數(shù);

strcmp("hello","hello");//將返回0。

例:下面的程序要求用戶(hù)輸入密碼,如果輸入正確,則進(jìn)行相應(yīng)的程序運(yùn)行,否則返回。

charpassword[20];printf("inputthepassword:");scanf("%11s",password);if(strcmp(password,"administrator")!=0)return;{…}不能寫(xiě)成if(password=="administrator")

18

字符串比較stricmp函數(shù)(或strcmpi)例:

inti;i=strcmp("abcd","ABCD");i=stricmp("abcd","ABCD");格式:同strcmp

//應(yīng)包含的.h文件為string.h差別:stricmp在比較兩個(gè)字符串時(shí)不區(qū)分大小寫(xiě),而

strcmp則區(qū)分大小寫(xiě)

strncmp函數(shù)//i的值為大于0//i的值為等于0格式:strncmp(字符串1,

字符串2,長(zhǎng)度n)

//應(yīng)包含的.h文件為string.h功能:將字符串1前n個(gè)字符的子串與字符串2前n個(gè)字符的子串進(jìn)行比較返值:同strcmp

例:inti;i=strncmp("abcd","abcDEF",3);i=strncmp("abcd","abcDEF",5);//i的值為等于0//i的值為大于019

字符串比較strnicmp函數(shù)格式:同strncmp

//應(yīng)包含string.h差別:strnicmp在比較兩個(gè)字符串時(shí)不區(qū)分大小寫(xiě),而

strncmp則區(qū)分大小寫(xiě)

字符串的連接格式:strcat(字符數(shù)組1,

字符數(shù)組2)

//應(yīng)包含string.h功能:把字符數(shù)組2連到字符數(shù)組1后面返值:返回字符數(shù)組1的首地址說(shuō)明:字符數(shù)組1必須足夠大連接前,兩串均以'\0'結(jié)束;連接后,串1的'\0'取

消,新串最后加'\0'例:charstr1[20]=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論