C語言程序設(shè)計第10章字符串課件_第1頁
C語言程序設(shè)計第10章字符串課件_第2頁
C語言程序設(shè)計第10章字符串課件_第3頁
C語言程序設(shè)計第10章字符串課件_第4頁
C語言程序設(shè)計第10章字符串課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10章字符串第10章字符串本章學習內(nèi)容字符串常量字符串處理函數(shù)字符數(shù)組和字符指針向函數(shù)傳遞字符串從函數(shù)返回一個字符串指針本章學習內(nèi)容字符串常量10.1字符串常量用雙引號括起的一串字符是字符串常量,C語言自動為其添加'\0'結(jié)束符"Howareyou"Howareyou\0一串以'\0'結(jié)尾的字符在C語言中被看作字符串10.1字符串常量用雙引號括起的一串字符是字符串常量,C語言10.2字符串的存儲C語言并沒有為字符串提供任何專門的表示法,完全使用字符數(shù)組和字符指針來處理字符數(shù)組每個元素都是字符類型的數(shù)組charstr[80];Howareyou\0Howareyou\0是字符數(shù)組,但不代表字符串數(shù)組的最后一個元素必須是'\0'10.2字符串的存儲C語言并沒有為字符串提供任何專門的表示法字符數(shù)組的初始化用字符型數(shù)據(jù)對數(shù)組進行初始化

charstr[6]={'C','h','i','n','a','\0'};用字符串常量直接對數(shù)組初始化

charstr[6]={"China"};charstr[6]="China";字符數(shù)組的初始化用字符型數(shù)據(jù)對數(shù)組進行初始化10.3字符指針C語言并沒有為字符串提供任何專門的表示法,完全使用字符數(shù)組和字符指針來處理字符串是一串用雙引號引起來的字符HelloChina\0字符數(shù)組就是每個元素都是字符型的數(shù)組字符指針就是指向字符類型數(shù)據(jù)的指針"HelloChina"pStr數(shù)組最后一個元素必須是'\0'才表示字符串10.3字符指針C語言并沒有為字符串提供任何專門的表示法,完10.3字符指針定義和初始化方法不同

str="HelloChina";HelloChina\0"HelloChina"pStrcharstr[12]={"HelloChina"};

char*pStr;pStr="HelloChina";strWhy?數(shù)組名str是地址常量

字符指針pStr是變量

10.3字符指針定義和初始化方法不同str="Hel10.3字符指針定義和初始化方法不同

char*pStr="HelloChina";HelloChina\0"HelloChina"pStrcharstr[12]={"HelloChina"};

char*pStr;pStr="HelloChina";strpStr=&str[0];10.3字符指針定義和初始化方法不同char*pStr按字符逐個輸入/輸出for(i=0;str[i]!='\0';i++){ putchar(str[i]);}putchar('\n');charstr[10];10.4字符串的訪問和輸入/輸出一般不用字符串長度控制按字符逐個輸入/輸出for(i=0;str[i]!='\按字符串整體輸入/輸出scanf("%s",str);printf("%s",str);charstr[10];10.4字符串的訪問和輸入/輸出gets(str);puts(str);不能輸入帶空格的字符串可以輸入帶空格的字符串按字符串整體輸入/輸出scanf("%s",str);chscanf("%s",str);printf("%s",str);charstr[10];10.4字符串的訪問和輸入/輸出gets(str);puts(str);空格、回車或制表(Tab)符是輸入數(shù)據(jù)的分隔符,因而不能被讀入,輸入遇到這些字符時,系統(tǒng)認為字符串輸入結(jié)束按字符串整體輸入/輸出scanf("%s",str);charstr[10];10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個人名,把它顯示在屏幕上Why?10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個人名,把它顯示在屏幕上10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)gets(),從鍵盤輸入一個帶有空格的人名,然后把它顯示在屏幕上10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)get10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)gets(),從鍵盤輸入一個帶有空格的人名,然后把它顯示在屏幕上不限制輸入字符串的長度易引起緩沖區(qū)溢出,給黑客攻擊以可乘之機10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)get10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)gets(),從鍵盤輸入一個帶有空格的人名,然后把它顯示在屏幕上能夠限制輸入字符串的長度10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)get10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個帶有空格的人名,然后在顯示人名的前面顯示"Hello",Isaidto10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個帶有空格的人名,然后在顯示人名的前面顯示"Hello",Isaidto10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個10.5字符串處理函數(shù)#include<string.h>strcpy(目的字符串,源字符串);stringcopystrlen(字符串);stringlengthstrcat(目的字符串,源字符串);stringcombinationstrcmp(字符串1,字符串2);stringcomparison10.5字符串處理函數(shù)#include<string.h>計算字符串長度#include<string.h>strlen(字符串);stringlengthcharstr[10]={"China"};printf("%d",

strlen(str));打印結(jié)果是5,6,還是10?China\0\0\0\0\0不包括\0的實際字符的個數(shù)計算字符串長度#include<string.h>strl計算字符串長度#include<string.h>strlen(字符串);stringlengthlen=

strlen(str);for(i=0;i<len;i++){ putchar(str[i]);}putchar('\n');用長度控制字符串輸出計算字符串長度#include<string.h>strl字符串復(fù)制#include<string.h>strcpy(目的字符串,源字符串);stringcopy字符串能否用=整體復(fù)制?str2=str1;strcpy(str2,str1);注意復(fù)制的方向!str2必須足夠大!字符串復(fù)制#include<string.h>strcpy字符串復(fù)制#include<string.h>strcpy(目的字符串,源字符串);stringcopy字符串能否用=整體復(fù)制?str2=str1;strcpy(str2,str1);想想這個函數(shù)是如何實現(xiàn)字符串復(fù)制的?字符串復(fù)制#include<string.h>strcpy字符串連接#include<string.h>strcat(目的字符串,源字符串);stringcombinationstrcat(str2,str1);str2必須足夠大!Hello\0\0\0\0\0\0\0

China\0HelloChina\0\0字符串連接#include<string.h>strcat字符串比較#include<string.h>strcmp(字符串1,字符串2);stringcomparison字符串能否用>,<,==比較大???if(str2==str1)if(strcmp(str2,str1)==0)字符串比較#include<string.h>strcmp字符串比較#include<string.h>strcmp(字符串1,字符串2);stringcomparison字符串是如何比較大小的?當出現(xiàn)第一對不相等的字符時,就由這兩個字符決定所在字符串的大小,返回其ASCII碼比較的結(jié)果值comparecomputercompare<computer表示strcmp(str1,str2)<0為真字符串比較#include<string.h>strcmp【例10.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃涡蜻M行排序【例10.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃巍纠?0.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃涡蜻M行排序【例10.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃?0.5字符串處理函數(shù)10.5字符串處理函數(shù)10.6向函數(shù)傳遞字符串向函數(shù)傳遞字符串時,既可使用字符數(shù)組作函數(shù)參數(shù),也可使用字符指針作函數(shù)參數(shù)傳地址調(diào)用10.6向函數(shù)傳遞字符串向函數(shù)傳遞字符串時,既可使用字符數(shù)組例10.5:字符串復(fù)制—用字符數(shù)組編程voidMyStrcpy(chardstStr[],charsrcStr[]){

inti=0;

while(srcStr[i]!='\0') { dstStr[i]=srcStr[i]; i++; } dstStr[i]='\0';}HelloChina\0

srcStr[i]dstStr[i]Hi=0ei=1li=2li=3oi=4i=5Ci=6hi=7ii=8ni=9ai=10\0srcStr[i]=='\0例10.5:字符串復(fù)制—用字符數(shù)組編程voidMyStvoidMyStrcpy(char*dstStr,char*srcStr){

while(*srcStr!='\0') { *dstStr=*srcStr; srcStr++; dstStr++; } *dstStr='\0';}例10.5:字符串復(fù)制—用字符指針編程HelloChina\0

*srcStr*dstStrHelloChina\0*srcStr=='\0srcStr++srcStrdstStr++dstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrsrcStrdstStrvoidMyStrcpy(char*dstStr,c例10.6:計算實際字符個數(shù)unsignedintMyStrlen(charstr[]){

inti;

unsignedintlen=0;

for(i=0;str[i]!='\0';i++) { len++; }

return(len);}unsignedintMyStrlen(constchar*pStr){

unsignedintlen=0;

for(;*pStr!='\0';pStr++) { len++; }

return(len);}方法2:用字符指針實現(xiàn)方法1:用字符數(shù)組實現(xiàn)統(tǒng)計實際字符個數(shù)

(不含'\0')例10.6:計算實際字符個數(shù)unsignedint10.7從函數(shù)返回字符指針【例10.7】編程實現(xiàn)strcat()的功能10.7從函數(shù)返回字符指針【例10.7】編程實現(xiàn)strcat10.7從函數(shù)返回字符指針【例10.7】編程實現(xiàn)strcat()的功能10.7從函數(shù)返回字符指針【例10.7】編程實現(xiàn)strcat10.7從函數(shù)返回字符指針【例10.7】編程實現(xiàn)strcat()的功能返回字符串首地址10.7從函數(shù)返回字符指針【例10.7】編程實現(xiàn)strcatQuestionsandanswersQuestionsandanswers第10章字符串第10章字符串本章學習內(nèi)容字符串常量字符串處理函數(shù)字符數(shù)組和字符指針向函數(shù)傳遞字符串從函數(shù)返回一個字符串指針本章學習內(nèi)容字符串常量10.1字符串常量用雙引號括起的一串字符是字符串常量,C語言自動為其添加'\0'結(jié)束符"Howareyou"Howareyou\0一串以'\0'結(jié)尾的字符在C語言中被看作字符串10.1字符串常量用雙引號括起的一串字符是字符串常量,C語言10.2字符串的存儲C語言并沒有為字符串提供任何專門的表示法,完全使用字符數(shù)組和字符指針來處理字符數(shù)組每個元素都是字符類型的數(shù)組charstr[80];Howareyou\0Howareyou\0是字符數(shù)組,但不代表字符串數(shù)組的最后一個元素必須是'\0'10.2字符串的存儲C語言并沒有為字符串提供任何專門的表示法字符數(shù)組的初始化用字符型數(shù)據(jù)對數(shù)組進行初始化

charstr[6]={'C','h','i','n','a','\0'};用字符串常量直接對數(shù)組初始化

charstr[6]={"China"};charstr[6]="China";字符數(shù)組的初始化用字符型數(shù)據(jù)對數(shù)組進行初始化10.3字符指針C語言并沒有為字符串提供任何專門的表示法,完全使用字符數(shù)組和字符指針來處理字符串是一串用雙引號引起來的字符HelloChina\0字符數(shù)組就是每個元素都是字符型的數(shù)組字符指針就是指向字符類型數(shù)據(jù)的指針"HelloChina"pStr數(shù)組最后一個元素必須是'\0'才表示字符串10.3字符指針C語言并沒有為字符串提供任何專門的表示法,完10.3字符指針定義和初始化方法不同

str="HelloChina";HelloChina\0"HelloChina"pStrcharstr[12]={"HelloChina"};

char*pStr;pStr="HelloChina";strWhy?數(shù)組名str是地址常量

字符指針pStr是變量

10.3字符指針定義和初始化方法不同str="Hel10.3字符指針定義和初始化方法不同

char*pStr="HelloChina";HelloChina\0"HelloChina"pStrcharstr[12]={"HelloChina"};

char*pStr;pStr="HelloChina";strpStr=&str[0];10.3字符指針定義和初始化方法不同char*pStr按字符逐個輸入/輸出for(i=0;str[i]!='\0';i++){ putchar(str[i]);}putchar('\n');charstr[10];10.4字符串的訪問和輸入/輸出一般不用字符串長度控制按字符逐個輸入/輸出for(i=0;str[i]!='\按字符串整體輸入/輸出scanf("%s",str);printf("%s",str);charstr[10];10.4字符串的訪問和輸入/輸出gets(str);puts(str);不能輸入帶空格的字符串可以輸入帶空格的字符串按字符串整體輸入/輸出scanf("%s",str);chscanf("%s",str);printf("%s",str);charstr[10];10.4字符串的訪問和輸入/輸出gets(str);puts(str);空格、回車或制表(Tab)符是輸入數(shù)據(jù)的分隔符,因而不能被讀入,輸入遇到這些字符時,系統(tǒng)認為字符串輸入結(jié)束按字符串整體輸入/輸出scanf("%s",str);charstr[10];10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個人名,把它顯示在屏幕上Why?10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個人名,把它顯示在屏幕上10.4字符串的訪問和輸入/輸出【例10.1】從鍵盤輸入一個10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)gets(),從鍵盤輸入一個帶有空格的人名,然后把它顯示在屏幕上10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)get10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)gets(),從鍵盤輸入一個帶有空格的人名,然后把它顯示在屏幕上不限制輸入字符串的長度易引起緩沖區(qū)溢出,給黑客攻擊以可乘之機10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)get10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)gets(),從鍵盤輸入一個帶有空格的人名,然后把它顯示在屏幕上能夠限制輸入字符串的長度10.4字符串的訪問和輸入/輸出【例10.2】使用函數(shù)get10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個帶有空格的人名,然后在顯示人名的前面顯示"Hello",Isaidto10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個帶有空格的人名,然后在顯示人名的前面顯示"Hello",Isaidto10.4字符串的訪問和輸入/輸出【例10.3】從鍵盤輸入一個10.5字符串處理函數(shù)#include<string.h>strcpy(目的字符串,源字符串);stringcopystrlen(字符串);stringlengthstrcat(目的字符串,源字符串);stringcombinationstrcmp(字符串1,字符串2);stringcomparison10.5字符串處理函數(shù)#include<string.h>計算字符串長度#include<string.h>strlen(字符串);stringlengthcharstr[10]={"China"};printf("%d",

strlen(str));打印結(jié)果是5,6,還是10?China\0\0\0\0\0不包括\0的實際字符的個數(shù)計算字符串長度#include<string.h>strl計算字符串長度#include<string.h>strlen(字符串);stringlengthlen=

strlen(str);for(i=0;i<len;i++){ putchar(str[i]);}putchar('\n');用長度控制字符串輸出計算字符串長度#include<string.h>strl字符串復(fù)制#include<string.h>strcpy(目的字符串,源字符串);stringcopy字符串能否用=整體復(fù)制?str2=str1;strcpy(str2,str1);注意復(fù)制的方向!str2必須足夠大!字符串復(fù)制#include<string.h>strcpy字符串復(fù)制#include<string.h>strcpy(目的字符串,源字符串);stringcopy字符串能否用=整體復(fù)制?str2=str1;strcpy(str2,str1);想想這個函數(shù)是如何實現(xiàn)字符串復(fù)制的?字符串復(fù)制#include<string.h>strcpy字符串連接#include<string.h>strcat(目的字符串,源字符串);stringcombinationstrcat(str2,str1);str2必須足夠大!Hello\0\0\0\0\0\0\0

China\0HelloChina\0\0字符串連接#include<string.h>strcat字符串比較#include<string.h>strcmp(字符串1,字符串2);stringcomparison字符串能否用>,<,==比較大?。縤f(str2==str1)if(strcmp(str2,str1)==0)字符串比較#include<string.h>strcmp字符串比較#include<string.h>strcmp(字符串1,字符串2);stringcomparison字符串是如何比較大小的?當出現(xiàn)第一對不相等的字符時,就由這兩個字符決定所在字符串的大小,返回其ASCII碼比較的結(jié)果值comparecomputercompare<computer表示strcmp(str1,str2)<0為真字符串比較#include<string.h>strcmp【例10.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃涡蜻M行排序【例10.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃巍纠?0.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃涡蜻M行排序【例10.4】按奧運會參賽國國名在字典中的順序?qū)ζ淙雸龃?0.5字符串處理函數(shù)10.5字符串處理函數(shù)10.6向函數(shù)傳遞字符串向函數(shù)傳遞字符串時,既可使用字符數(shù)組作函數(shù)參數(shù),也可使用字符指針作函數(shù)參數(shù)傳地址調(diào)用10.6向函數(shù)傳遞字符串向函數(shù)傳遞字符串時,既可使用字符數(shù)組例10.5:字符串復(fù)制—用字符數(shù)組編程voidMyStrcpy(chardstStr[],charsrcStr[]){

inti=0;

while(srcStr[i]!='\0') { dstStr[i]=srcStr[i]; i++; } dstStr[i]='\0';}HelloChina\0

srcStr[i]dstStr[i]Hi=0ei=1li=2li=3oi=4i=5Ci=6hi=7ii=8ni=9ai=10\0sr

溫馨提示

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

評論

0/150

提交評論