




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.字符型數(shù)據(jù)C程序設(shè)計(jì)語(yǔ)言采用了ASCII標(biāo)準(zhǔn)字符集來(lái)提供對(duì)字符數(shù)據(jù)的支持。ASCII字符集提供了127個(gè)字符的編碼。組成如下:字母:大寫英文字母A~Z,小寫字母a~z數(shù)字:0~9專門符號(hào):29個(gè),包括:!“等等空格符:空格、水平制表符(tab)、垂直制表符號(hào)等等轉(zhuǎn)義字符:‘\n’(回車換行)‘\b’(退格)等等ASCII編碼(書本附錄P377) 在計(jì)算內(nèi)部實(shí)際上是將字符以整數(shù)形式存放在內(nèi)存單元中的。這個(gè)整數(shù)實(shí)際上就是字符的ASCII編碼 例如:大寫字母’A’的ASCII編碼是65,‘Z’的編碼是90小寫字母’a’的ASCII編碼是97,’z’的編碼是122數(shù)字字符’0’的ASCII編碼是49,‘9’的編碼是57空格字符’‘的ASCII編碼是32
注意:
(1)C語(yǔ)言中字符常量是由1個(gè)字符構(gòu)成的數(shù)據(jù).
(2)在程序中,字符常量必須用單引起括起來(lái),所以’1’和1是兩個(gè)完全不同的對(duì)象。前者是字符,后者是一個(gè)數(shù)字.字符變量 字符變量是用類型符char定義的變量。一個(gè)字符變量只能存儲(chǔ)一個(gè)ASCII字符。
例如:charc;
正確的代碼:c=‘?’;
錯(cuò)誤的代碼: c=‘?!’; c=“abc”;
2.字符串常量 由多個(gè)字符組成的數(shù)據(jù)稱為字符串常量(以后簡(jiǎn)稱字符串),字符串常量的兩邊必須用雙引號(hào)包含起來(lái)。
例如:“thisisastring.”或“china”在C程序設(shè)計(jì)語(yǔ)言中,字符串常量使用數(shù)組保存。區(qū)別字符字符串形式用單引號(hào)括起來(lái)用雙引號(hào)括起來(lái)數(shù)量1個(gè)字符大于等于一個(gè)字符字符串在內(nèi)存中的存儲(chǔ)方式是,按順序存儲(chǔ)每個(gè)字符的ASCII編碼值,如下圖所示。每個(gè)字符串的末尾都附有一個(gè)特殊字符\0,稱為字符串結(jié)束標(biāo)志。C語(yǔ)言中沒(méi)有字符串變量,因此要保存字符串常量的話需要借助字符數(shù)組.6.3字符數(shù)組 P154字符數(shù)組使用char關(guān)鍵字進(jìn)行定義,一般形式如下:char數(shù)組名[數(shù)組長(zhǎng)度];例如:
定義字符數(shù)組c,并將字符逐一保存到字符數(shù)組中. charc[20]={‘I’,’
’,’a’,’m’,’
’,’h’,’a’,’p’,’p’,’y’,’\0’};
C[0]C[1]C[2]C[3]C[4]C[5]C[6]C[7]C[8]C[9]C[10]C[11]…‘I’‘’‘a(chǎn)’‘m’‘’‘h’‘a(chǎn)’‘p’‘p’‘y’‘\0’‘\0’…注意:余下的數(shù)組元素用空字符’\0’填充字符串和字符串結(jié)束標(biāo)志’\0’可以直接使用字符串常量來(lái)賦值字符數(shù)組,例如: charc[20]={“Iamhappy”};或簡(jiǎn)寫成charc[20]=“Iamhappy”;
和上一個(gè)例子相同,字符串中的字符是逐個(gè)存放到數(shù)組元素中的。唯一的區(qū)別是,C系統(tǒng)在用字符數(shù)組存儲(chǔ)字符串常量時(shí)會(huì)自動(dòng)在末尾加一個(gè)’\0’作為字符串結(jié)束標(biāo)志。所以上面的程序?qū)嶋H上是存儲(chǔ)了11個(gè)字符數(shù)據(jù)到數(shù)組c中。C[0]C[1]C[2]C[3]C[4]C[5]C[6]C[7]C[8]C[9]C[10]C[11]…‘I’‘’‘a(chǎn)’‘m’‘’‘h’‘a(chǎn)’‘p’‘p’‘y’‘\0’……字符數(shù)組的輸出方法 P159(一)逐個(gè)字符輸出
使用printf語(yǔ)句和%c格式符#include<stdio.h>main(){charc[15]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};chard[11]=“Iamhappy”;inti;for(i=0;i<15;i++) printf("%c",c[i]);printf("\n");for(i=0;i<10;i++) printf("%c",d[i]);}(二)將整個(gè)字符串一次輸出,使用printf和%s格式符例C6-6-2.C#include<stdio.h>main(){charc[11]="Iamhappy";printf("%s",c);getch();}用%s格式符輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名說(shuō)明:輸出的字符不包括結(jié)束符’\0’如果數(shù)組長(zhǎng)度大于字符串實(shí)際長(zhǎng)度,輸出到’\0’結(jié)束例如:charc[10]=“China”;只輸出有效的字符5個(gè)如果字符數(shù)組中包含一個(gè)以上’\0’,則遇第一個(gè)’\0’時(shí)輸出就結(jié)束。例如 charc[]={“helloBob”}; c[5]=‘\0’; printf(“%s”,c);/*屏幕上輸出hello*/
c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]hello空格Bob‘\0’字符數(shù)組的輸入 可以用scanf函數(shù)輸入一個(gè)字符串。
例如: charc[20]; scanf(”%s”,c); 注意:scanf函數(shù)中的輸入項(xiàng)c是已定義的字符數(shù)組名,數(shù)組名前面不要加&,因?yàn)镃語(yǔ)言中數(shù)組名代表該數(shù)組的地址。6.3.6字符串處理函數(shù)puts()函數(shù) 作用:是將一個(gè)字符串(以’\0’結(jié)束的字符序列)輸出到屏幕。使用方式為:puts(字符數(shù)組名);例如: charstr[]={“china\nBeijing”};puts(str);gets()函數(shù) 作用:作用是從終端輸入一個(gè)字符串到字符數(shù)組。使用方式為:gets(字符數(shù)組名);例如: charstr[200];gets(str);二維字符數(shù)組若需要存放多個(gè)字符串,則可以使用二維字符數(shù)組定義二維字符數(shù)組的語(yǔ)法格式char數(shù)組名[整型常量][整型常量];例如:chararr[3][10];例題6.15二維字符數(shù)組單個(gè)元素引用#include<stdio.h>voidmain(){charweek[7][10]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};inti,j;for(i=0;i<7;i++){for(j=0;j<10;j++)printf("%c",week[i][j]);printf("\n");}}操作字符串的函數(shù)下面介紹字符串處理函數(shù),使用這些有特殊功能的函數(shù)時(shí),ANSIC標(biāo)準(zhǔn)要求必須包含頭文件”string.h”,即程序的開(kāi)頭要有#include“string.h”strcat函數(shù)用于連接兩個(gè)字符數(shù)組中的字符串。即把字符串2接到字符串1的后,并將結(jié)果保存在字符數(shù)組1。strcat(字符數(shù)組1,字符數(shù)組2)例:s1[0]s1[1]s1[2]s1[3]s1[4]s1[5]s1[6]s1[7]s1[8]s1[9]very\0s2[0]s2[1]s2[2]s2[3]s2[4]good\0strcpy函數(shù)strcpy是字符串復(fù)制函數(shù)。作用是將字符串2復(fù)制到字符數(shù)組1中去。其一般形式為:strcpy(字符數(shù)組1,字符串2)
例s1[0]s1[1]s1[2]s1[3]s1[4]s1[5]s1[6]s1[7]s1[8]s1[9]history\0s2[0]s2[1]s2[2]s2[3]s2[4]s2[5]China\0China\0關(guān)于strcpy函數(shù)的幾點(diǎn)說(shuō)明字符數(shù)組1必須定義得足夠大。字符數(shù)組1必須寫成數(shù)組名形式,字符串2可以是字符數(shù)組名,也可以是一個(gè)字符串常量。 如:strcpy(str1,”China”);復(fù)制時(shí)連同字符串后面的’\0’一起復(fù)制到字符數(shù)組1不能用賦值語(yǔ)句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。如:str1=″China″;不合法str1=str2;不合法strcmp函數(shù)
其一般形式為:strcmp(字符串1,字符串2)
strcmp的作用是比較字符串1和字符串2。比較的結(jié)果由函數(shù)值帶回如果字符串1=字符串2,函數(shù)值為0。如果字符串1>字符串2,函數(shù)值為一正整數(shù)。如果字符串1<字符串2,函數(shù)值為一負(fù)整數(shù)例如:E5.C比較規(guī)則:按字母的ASCII碼比較注意:對(duì)兩個(gè)字符串比較,不能用str1>str2strlen函數(shù)strlen是測(cè)試字符串長(zhǎng)度的函數(shù)。函數(shù)的值為字符串中的實(shí)際長(zhǎng)度(不包括’\0’)。其一般形式為:strlen(字符數(shù)組)例如:
charstr[10]={“China”}; printf(“%d“,strlen(str));輸出結(jié)果不是10,也不是6,而是5。strlwr函數(shù)和strupr函數(shù)
strlwr函數(shù)的作用是將字符串中大寫字母換成小寫字母。其一般形式為:strlwr(字符串)strupr函數(shù)的作用是將字符串中小寫字母換成大寫字母。其一般形式為:strupr(字符串)6.3.3指向字符串的指針變量可以定義一個(gè)指向字符的指針變量來(lái)指向存放字符串的首地址,這種指針變量就稱為指向字符串的指針變量。 例如:char*ptr=“Thisisastring”;
說(shuō)明:系統(tǒng)分配一塊長(zhǎng)度為字符串字符個(gè)數(shù)加上1的連續(xù)內(nèi)存空間用于存放該字符串,然后將連續(xù)內(nèi)存空間的首地址賦給字符指針ptr.例6.17#include"stdio.h"voidmain(){char*string;string="Thisisastring.";printf("%s\n",string);string+=8;while(*string){putchar(string[0]);string++;}}Thisisastring.\0內(nèi)存指向字符數(shù)組的指針變量 可以定義一個(gè)字符指針指向一字符數(shù)組。例6.18#include"stdio.h"main(){charstr[]="Thisisastring.";char*string;string=str;printf("%s\n",str);printf("%s\n",string);string+=8;printf("%s\n",string);getch();}字符串應(yīng)用舉例例題1:統(tǒng)計(jì)用戶從鍵盤上輸入字符串中字符的個(gè)數(shù)。#include<stdio.h>voidmain(){charc[100];inti,sum=0;gets(c);for(i=0;c[i]!='\0';i++)sum++;printf("theinputfontnumber=%d",sum);}循環(huán)終止條件c[i]!=‘\0’當(dāng)遇到存儲(chǔ)字符串結(jié)束符的數(shù)組元素時(shí),則循環(huán)停止。tjzf1.c方法1:使用gets函數(shù)完整讀取輸入的內(nèi)容后,再使用循環(huán)逐個(gè)統(tǒng)計(jì)又字符的數(shù)組元素個(gè)數(shù),直到遇到字符串結(jié)束符\0為止 方法2:使用getchar函數(shù)逐個(gè)讀取鍵盤上輸入的字符并保存到數(shù)組中,直到遇到回車符’\n’時(shí)停止tjzf2.c#include<stdio.h>voidmain(){charc[100];inti,sum=0;for(i=0;((c[i]=getchar())!='\n')&&i<100;i++)sum++;printf("theinputfontnumber=%d",sum);getch();}例題2:編寫程序代碼統(tǒng)計(jì)用戶從鍵盤上輸入一行字符中,字母,數(shù)字,空格和其他字符的個(gè)數(shù)。例如:鍵盤輸入Monday.則顯示字母有9個(gè),數(shù)字2個(gè),空格4個(gè),其他字符1個(gè)#include<stdio.h>voidmain(){charc[100];inti,zm=0,sz=0,kg=0,qt=0;gets(c);…….}#include<stdio.h>voidmain(){charc[100];inti,zm=0,sz=0,kg=0,qt=0;gets(c);for(i=0;c[i]!=‘\0’;i++){if('A'<=c[i]&&c[i]<='Z')zm++;elseif('a'<=c[i]&&c[i]<='z')zm++;elseif('0'<=c[i]&&c[i]<='9')sz++;elseif(c[i]=='')kg++;elseqt++;}printf("zm=%dsz=%dkg=%dqt=%d",zm,sz,kg,qt);}Pdzf.c例6.21利用字符指針把字符串s1復(fù)制到字符串2main(){chars1[]="Hello,World!",s2[15];char*from=s1,*to=s2;while(*from){*to=*from;to++;from++;}*to='\0';puts(s1);puts(s2);}main(){chars1[]="Hello,World!",s2[15];char*from=s1,*to=s2;while(*from){*to=*from;to++;from++;}*to='\0';puts(s1);puts(s2);}s1[0]s1[1]s1[2]s1[3]s1[4]…s1[11]s1[12]Hello…!\0s2[0]s2[1]s2[2]s2[3]s1[4]…s2[13]s2[14]例6.22利用字符指針比較字符串s1、s2的大小#include"stdio.h"main(){chars1[80],s2[80];char*str1=s1,*str2=s2;intd=0;printf("Inputstrings1ands2:\n");gets(str1);gets(str2);while(*str1&&*str2){d=*str1-*str2;if(d!=0)break;str1++,str2++;}if(d==0)d=*str1-*str2;printf("%d\n",d);}#include"stdio.h"main(){chars1[80],s2[80];char*str1=s1,*str2=s2;intd=0;printf("Inputstrings1ands2:\n");gets(str1);gets(str2);while(*str1&&*str2){d=*str1-*str2;if(d!=0)break;str1++,str2++;}if(d==0)d=*str1-*str2;printf("%d\n",d);}s1[0]s1[1]s1[2]s1[3]s1[4]s1[5]…s1[79]s2[0]s2[1]s2[2]s2[3]s2[4]s1[5]…s2[79]例6.23將字符串s1、s2連接后存放到s1#include"stdio.h"main(){chars1[80],s2[80];inti=0,j=0;printf("Inputstrings1ands2:\n");gets(s1);gets(s2);while(s1[i]!='\0')i++;while(s1[j]!='\0'){s1[i]=s2[j];i++;j++;}s1[i]='\0';puts(s1);}例6.23將字符串s1、s2連接后存放到s1#include"stdio.h"main(){chars1[80],s2[80];inti=0,j=0;printf("Inputstrings1ands2:\n");gets(s1);gets(s2);while(s1[i]!='\0')i++;while(s1[j]!='\0'){s1[i]=s2[j];i++;j++;}s1[i]='\0';puts(s1);}s1[0]s1[1]s1[2]s1[3]s1[4]s1[5]…s1[79]ABC\0s2[0]s2[1]s2[2]s2[3]s2[4]s1[5]…s2[79]de\0例6.24將字符串s1中的所有大寫字母轉(zhuǎn)換成小寫字母,將字符串s2中的所有小寫字母轉(zhuǎn)換成大寫字母#include"stdio.h"main(){chars1[]="BeiJing2008",s2[]="BeiJing2008";char*str1,*str2;str1=s1,str2=s2;while(*str1!='\0'){if((*str1>='A')&&(*str1<='Z'))*str1+=32;str1++;}while(*str2!='\0'){if((*str2>='a')&&(*str2<='z'))*str2-=32;str2++;}puts(s1);puts(s2);}例6.25刪除一個(gè)字符串中所有的空格字符#include"stdio.h"main(){chars[80],*p1,*p2;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年現(xiàn)代語(yǔ)文教學(xué)與應(yīng)用知識(shí)考試試題及答案
- 2025年心理評(píng)估與測(cè)量技術(shù)考試卷及答案
- 高紅移類星體探測(cè)-洞察及研究
- 2025年數(shù)據(jù)隱私保護(hù)與合規(guī)管理考核試卷及答案
- 2025年社會(huì)工作實(shí)務(wù)基礎(chǔ)考核試題及答案
- 2025年軟件工程專業(yè)實(shí)踐考試卷及答案
- 2025年生活方式與健康管理知識(shí)考試試題及答案
- 2025年全國(guó)大學(xué)英語(yǔ)四級(jí)考試試卷及答案
- 2025年青少年心理健康教育的重要考試試卷及答案
- 2025年臨床醫(yī)學(xué)執(zhí)業(yè)考試試卷及答案
- 連帶責(zé)任擔(dān)保借條(四篇)
- 2023年計(jì)算機(jī)圖形學(xué)試題級(jí)考試A卷
- GB/T 42104-2022游樂(lè)園安全安全管理體系
- 八年級(jí)下冊(cè)人教版英語(yǔ)單項(xiàng)選擇(50題)練習(xí)題含答案含答案
- 河北省大眾滑雪等級(jí)標(biāo)準(zhǔn)(試行)
- GB/T 3863-2008工業(yè)氧
- GB/T 31125-2014膠粘帶初粘性試驗(yàn)方法環(huán)形法
- 班主任班級(jí)管理(課堂)課件
- 學(xué)院輔導(dǎo)答疑情況記錄表
- 31個(gè)級(jí)地區(qū)國(guó)家重點(diǎn)監(jiān)控企業(yè)自行監(jiān)測(cè)信息公開(kāi)平臺(tái)及污染源監(jiān)督性監(jiān)測(cè)信息公開(kāi)網(wǎng)址
- 2022年江西省投資集團(tuán)有限公司校園招聘筆試模擬試題及答案解析
評(píng)論
0/150
提交評(píng)論