




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1.字符型數(shù)據(jù)C程序設計語言采用了ASCII標準字符集來提供對字符數(shù)據(jù)的支持。ASCII字符集提供了127個字符的編碼。組成如下:字母:大寫英文字母A~Z,小寫字母a~z數(shù)字:0~9專門符號:29個,包括:!“等等空格符:空格、水平制表符(tab)、垂直制表符號等等轉義字符:‘\n’(回車換行)‘\b’(退格)等等ASCII編碼(書本附錄P377) 在計算內部實際上是將字符以整數(shù)形式存放在內存單元中的。這個整數(shù)實際上就是字符的ASCII編碼 例如:大寫字母’A’的ASCII編碼是65,‘Z’的編碼是90小寫字母’a’的ASCII編碼是97,’z’的編碼是122數(shù)字字符’0’的ASCII編碼是49,‘9’的編碼是57空格字符’‘的ASCII編碼是32
注意:
(1)C語言中字符常量是由1個字符構成的數(shù)據(jù).
(2)在程序中,字符常量必須用單引起括起來,所以’1’和1是兩個完全不同的對象。前者是字符,后者是一個數(shù)字.字符變量 字符變量是用類型符char定義的變量。一個字符變量只能存儲一個ASCII字符。
例如:charc;
正確的代碼:c=‘?’;
錯誤的代碼: c=‘?!’; c=“abc”;
2.字符串常量 由多個字符組成的數(shù)據(jù)稱為字符串常量(以后簡稱字符串),字符串常量的兩邊必須用雙引號包含起來。
例如:“thisisastring.”或“china”在C程序設計語言中,字符串常量使用數(shù)組保存。區(qū)別字符字符串形式用單引號括起來用雙引號括起來數(shù)量1個字符大于等于一個字符字符串在內存中的存儲方式是,按順序存儲每個字符的ASCII編碼值,如下圖所示。每個字符串的末尾都附有一個特殊字符\0,稱為字符串結束標志。C語言中沒有字符串變量,因此要保存字符串常量的話需要借助字符數(shù)組.6.3字符數(shù)組 P154字符數(shù)組使用char關鍵字進行定義,一般形式如下:char數(shù)組名[數(shù)組長度];例如:
定義字符數(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’填充字符串和字符串結束標志’\0’可以直接使用字符串常量來賦值字符數(shù)組,例如: charc[20]={“Iamhappy”};或簡寫成charc[20]=“Iamhappy”;
和上一個例子相同,字符串中的字符是逐個存放到數(shù)組元素中的。唯一的區(qū)別是,C系統(tǒng)在用字符數(shù)組存儲字符串常量時會自動在末尾加一個’\0’作為字符串結束標志。所以上面的程序實際上是存儲了11個字符數(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(一)逐個字符輸出
使用printf語句和%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]);}(二)將整個字符串一次輸出,使用printf和%s格式符例C6-6-2.C#include<stdio.h>main(){charc[11]="Iamhappy";printf("%s",c);getch();}用%s格式符輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名說明:輸出的字符不包括結束符’\0’如果數(shù)組長度大于字符串實際長度,輸出到’\0’結束例如:charc[10]=“China”;只輸出有效的字符5個如果字符數(shù)組中包含一個以上’\0’,則遇第一個’\0’時輸出就結束。例如 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ù)輸入一個字符串。
例如: charc[20]; scanf(”%s”,c); 注意:scanf函數(shù)中的輸入項c是已定義的字符數(shù)組名,數(shù)組名前面不要加&,因為C語言中數(shù)組名代表該數(shù)組的地址。6.3.6字符串處理函數(shù)puts()函數(shù) 作用:是將一個字符串(以’\0’結束的字符序列)輸出到屏幕。使用方式為:puts(字符數(shù)組名);例如: charstr[]={“china\nBeijing”};puts(str);gets()函數(shù) 作用:作用是從終端輸入一個字符串到字符數(shù)組。使用方式為:gets(字符數(shù)組名);例如: charstr[200];gets(str);二維字符數(shù)組若需要存放多個字符串,則可以使用二維字符數(shù)組定義二維字符數(shù)組的語法格式char數(shù)組名[整型常量][整型常量];例如:chararr[3][10];例題6.15二維字符數(shù)組單個元素引用#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ù)時,ANSIC標準要求必須包含頭文件”string.h”,即程序的開頭要有#include“string.h”strcat函數(shù)用于連接兩個字符數(shù)組中的字符串。即把字符串2接到字符串1的后,并將結果保存在字符數(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是字符串復制函數(shù)。作用是將字符串2復制到字符數(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關于strcpy函數(shù)的幾點說明字符數(shù)組1必須定義得足夠大。字符數(shù)組1必須寫成數(shù)組名形式,字符串2可以是字符數(shù)組名,也可以是一個字符串常量。 如:strcpy(str1,”China”);復制時連同字符串后面的’\0’一起復制到字符數(shù)組1不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。如:str1=″China″;不合法str1=str2;不合法strcmp函數(shù)
其一般形式為:strcmp(字符串1,字符串2)
strcmp的作用是比較字符串1和字符串2。比較的結果由函數(shù)值帶回如果字符串1=字符串2,函數(shù)值為0。如果字符串1>字符串2,函數(shù)值為一正整數(shù)。如果字符串1<字符串2,函數(shù)值為一負整數(shù)例如:E5.C比較規(guī)則:按字母的ASCII碼比較注意:對兩個字符串比較,不能用str1>str2strlen函數(shù)strlen是測試字符串長度的函數(shù)。函數(shù)的值為字符串中的實際長度(不包括’\0’)。其一般形式為:strlen(字符數(shù)組)例如:
charstr[10]={“China”}; printf(“%d“,strlen(str));輸出結果不是10,也不是6,而是5。strlwr函數(shù)和strupr函數(shù)
strlwr函數(shù)的作用是將字符串中大寫字母換成小寫字母。其一般形式為:strlwr(字符串)strupr函數(shù)的作用是將字符串中小寫字母換成大寫字母。其一般形式為:strupr(字符串)6.3.3指向字符串的指針變量可以定義一個指向字符的指針變量來指向存放字符串的首地址,這種指針變量就稱為指向字符串的指針變量。 例如:char*ptr=“Thisisastring”;
說明:系統(tǒng)分配一塊長度為字符串字符個數(shù)加上1的連續(xù)內存空間用于存放該字符串,然后將連續(xù)內存空間的首地址賦給字符指針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內存指向字符數(shù)組的指針變量 可以定義一個字符指針指向一字符數(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();}字符串應用舉例例題1:統(tǒng)計用戶從鍵盤上輸入字符串中字符的個數(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’當遇到存儲字符串結束符的數(shù)組元素時,則循環(huán)停止。tjzf1.c方法1:使用gets函數(shù)完整讀取輸入的內容后,再使用循環(huán)逐個統(tǒng)計又字符的數(shù)組元素個數(shù),直到遇到字符串結束符\0為止 方法2:使用getchar函數(shù)逐個讀取鍵盤上輸入的字符并保存到數(shù)組中,直到遇到回車符’\n’時停止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)計用戶從鍵盤上輸入一行字符中,字母,數(shù)字,空格和其他字符的個數(shù)。例如:鍵盤輸入Monday.則顯示字母有9個,數(shù)字2個,空格4個,其他字符1個#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復制到字符串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中的所有大寫字母轉換成小寫字母,將字符串s2中的所有小寫字母轉換成大寫字母#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刪除一個字符串中所有的空格字符#include"stdio.h"main(){chars[80],*p1,*p2;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院康復患者管理制度
- 公路橋梁安全檢測方法試題及答案
- 公??蛻糍Y源管理制度
- 安全現(xiàn)場分級管理制度
- 工地廚房獎罰管理制度
- 公司清潔外包管理制度
- 行政組織協(xié)作機制考題及答案
- 數(shù)據(jù)的生命周期管理流程試題及答案
- 安全操作規(guī)定管理制度
- 學校防疫學生管理制度
- 淘寶網(wǎng)-信息披露申請表
- 小微型客車租賃經(jīng)營備案表
- 教育培訓機構辦學許可證申請書(樣本)
- 瓷磚業(yè)務員提成方案
- 2022年一級注冊計量師案例分析真題
- “三級”安全安全教育記錄卡
- 愛蓮說-王崧舟
- 小微企業(yè)信用評級標準模板
- 車輛安全設施設備定期檢查臺賬
- 超危大工程實施指導手冊宣貫
- 人教版小學五年級數(shù)學競賽試題及答案
評論
0/150
提交評論