字符串處理函數_第1頁
字符串處理函數_第2頁
字符串處理函數_第3頁
字符串處理函數_第4頁
字符串處理函數_第5頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、聯系方式:http:/北京源智天下科技有限公司第第1313章章 字字 符符 串串 處處 理理 函函 數數在本章的學習中,需要重點掌握以下知識點:在本章的學習中,需要重點掌握以下知識點:putchar函數和函數和getchar函數的正確使用;函數的正確使用;puts函數和函數和gets函數的正確使用;函數的正確使用;strcpy函數和函數和strncpy函數的正確使用;函數的正確使用;strcat函數和函數和strncat函數的正確使用;函數的正確使用;strncmp函數和函數和strcmp函數的正確使用;函數的正確使用;strupr函數和函數和strlwr函數的正確使用。函數的正確使用。聯系方

2、式:http:/北京源智天下科技有限公司13.1 13.1 輸入和輸出函數輸入和輸出函數輸入輸出操作的使用十分頻繁,輸入輸出操作的使用十分頻繁,C標準庫為字符和字符串分標準庫為字符和字符串分別專門定義了幾組輸入輸出函數。其中包括:別專門定義了幾組輸入輸出函數。其中包括:putchar函函數和數和getchar函數,它們提供了字符的輸入輸出操作;函數,它們提供了字符的輸入輸出操作;puts函數和函數和gets函數,它們提供了字符串的輸入輸出操函數,它們提供了字符串的輸入輸出操作。本節將分別討論它們的使用。作。本節將分別討論它們的使用。聯系方式:http:/北京源智天下科技有限公司putchar函

3、數和函數和getchar函數提供了字符的輸入和輸出操作函數提供了字符的輸入和輸出操作。putchar的作用是向標準輸出打印一個字符。其使用方的作用是向標準輸出打印一個字符。其使用方式一般如下:式一般如下:01char c;0203putchar(c);如果輸出成功,如果輸出成功,putchar函數的函數值為輸出字符的函數的函數值為輸出字符的ASCII碼值;如果失敗,碼值;如果失敗,putchar返回一個返回一個EOF符號。符號。聯系方式:http:/北京源智天下科技有限公司getchar函數的作用是從標準輸入以字符型形式讀入值賦值函數的作用是從標準輸入以字符型形式讀入值賦值給一個字符。其使用方

4、式一般如下:給一個字符。其使用方式一般如下:01char c;02c = getchar();執行上述語句后,執行上述語句后,getchar函數從標準輸入獲得一個值,并函數從標準輸入獲得一個值,并把該值作為函數值賦值給字符把該值作為函數值賦值給字符c。聯系方式:http:/北京源智天下科技有限公司puts函數和函數和gets函數提供了字符串的輸入和輸出操作。函數提供了字符串的輸入和輸出操作。puts函數的作用是向標準輸出打印一個字符串。其使用函數的作用是向標準輸出打印一個字符串。其使用方式如下:方式如下:01char str = “Linux Terminal”;02puts(str);執行上

5、述語句后,執行上述語句后,str的有效內容(直到第一個的有效內容(直到第一個0)被輸)被輸出到標準輸出。如果函數執行成功,該函數的函數值為出到標準輸出。如果函數執行成功,該函數的函數值為一個非負數;否則,返回值為一個非負數;否則,返回值為EOF。如果上述第。如果上述第2行語句行語句為為i = puts(str);i將獲得將獲得puts函數的函數值。函數的函數值。gets函數的作用是從標準輸入讀取一個字符串賦給其參數。函數的作用是從標準輸入讀取一個字符串賦給其參數。調用的形式如下:調用的形式如下:char str20 = “0”;gets(str);聯系方式:http:/北京源智天下科技有限公司

6、執行上述語句后,執行上述語句后,str將從標準輸入獲取一個字符串,直到遇到一將從標準輸入獲取一個字符串,直到遇到一個回車符個回車符n或或EOF(使用【(使用【CtrlC】可以輸入】可以輸入EOF)。例)。例如,如果輸入為:如,如果輸入為:a handsome man則字符數組則字符數組str被賦值為被賦值為“a handsome man”。需要注意的是,。需要注意的是,由于字符串由于字符串“a handsome man”有效內容為有效內容為14個字符,所以個字符,所以在這個賦值過程中,字符數組只有前在這個賦值過程中,字符數組只有前15個字符(加上個字符(加上1個字符個字符串終止符)被賦值,其剩

7、余的串終止符)被賦值,其剩余的5個字符并不會被改變,保留原個字符并不會被改變,保留原來的值。來的值。同時,同時,str只能獲取其有效空間內的字符,如果輸入的字符超過只能獲取其有效空間內的字符,如果輸入的字符超過20個,那么個,那么str也只能獲取也只能獲取20個字符,但是其他多余的字符仍然會個字符,但是其他多余的字符仍然會被繼續賦值給被繼續賦值給str有效空間后的內存空間。這樣會導致修改外部有效空間后的內存空間。這樣會導致修改外部內存空間,從而導致一些不可預測的問題。內存空間,從而導致一些不可預測的問題。聯系方式:http:/北京源智天下科技有限公司13.2 13.2 復制和拼接復制和拼接字符

8、串復制和拼接也是應用頻繁的操作。字符串復制和拼接也是應用頻繁的操作。C標準庫提供了標準庫提供了strcpy函數和函數和strncpy函數來實現字符串復制的功能,并函數來實現字符串復制的功能,并提供了提供了strcat函數和函數和strncat函數來實現字符串拼接的功函數來實現字符串拼接的功能。本節將分別討論兩者的使用。能。本節將分別討論兩者的使用。聯系方式:http:/北京源智天下科技有限公司C語言為字符串的復制操作也定義了一個語言為字符串的復制操作也定義了一個strcpy函數。使用函數。使用形式如下:形式如下:strcpy(str1, str2);其中其中str1和和str2為字符串。執行該

9、語句后,為字符串。執行該語句后,strcpy函數會將函數會將str2的前的前n個字符復制到個字符復制到str1的前的前n個字符空間。需要注意個字符空間。需要注意的是,如果的是,如果str2的有效字符不足的有效字符不足n個,那么該函數會將個,那么該函數會將str1的其余空間賦值為的其余空間賦值為0。聯系方式:http:/北京源智天下科技有限公司strcpy函數不是一個安全的函數。由于該函數會為一個字符函數不是一個安全的函數。由于該函數會為一個字符數組數組str1賦值,因此該賦值不能超過超過賦值,因此該賦值不能超過超過str1的有效內存的有效內存空間,如果超過了將會覆蓋外部內存空間,從而可能導空間

10、,如果超過了將會覆蓋外部內存空間,從而可能導致不可預測的問題。因此,使用該函數時,必須注意兩致不可預測的問題。因此,使用該函數時,必須注意兩個字符串的字長。個字符串的字長。聯系方式:http:/北京源智天下科技有限公司C語言為字符串的復制操作還定義了一個更為安全語言為字符串的復制操作還定義了一個更為安全strncpy函數。使用形式如下:函數。使用形式如下:strncpy(str1, str2, n);其中其中str1和和str2為字符串,為字符串,n為整型變量。執行該語句后,為整型變量。執行該語句后,strncpy函數會將函數會將str2的前的前n個字符復制到個字符復制到str1的前的前n個字

11、個字符空間。需要注意的是,如果符空間。需要注意的是,如果str2的有效字符不足的有效字符不足n個,個,那么該函數會將那么該函數會將str1的其余空間賦值為的其余空間賦值為0。聯系方式:http:/北京源智天下科技有限公司與與strcpy函數類似,函數類似,strncpy函數也不是一個絕對安全的函函數也不是一個絕對安全的函數。當數。當n大于大于str1的字長空間時,同樣也會發生溢出的情的字長空間時,同樣也會發生溢出的情況。但是,由于況。但是,由于n的存在,使程序員可以顯式地控制復制的存在,使程序員可以顯式地控制復制字符串的大小,所以該函數比字符串的大小,所以該函數比strcpy更為安全。因此,更

12、為安全。因此,因此使用該函數時,要注意因此使用該函數時,要注意n的使用,一般的使用,一般n不能大于不能大于str1所占的內存大小。所占的內存大小。聯系方式:http:/北京源智天下科技有限公司strcat函數和函數和strncat函數提供了字符串的拼接功能。函數提供了字符串的拼接功能。strcat函數的聲明如下:函數的聲明如下:char * strcat(char * str1, char * str2);其功能為將其功能為將str2的有效字符拼接到的有效字符拼接到str1的有效字符的后面,的有效字符的后面,因此因此str1的空間要足夠存儲的空間要足夠存儲str1和和str2的所有有效字符。的

13、所有有效字符。聯系方式:http:/北京源智天下科技有限公司strncat函數的聲明如下:函數的聲明如下:char * strncat(char * str1, char * str2, int n);其功能為將其功能為將str2的前的前n個字符復制到個字符復制到str1的后面,此時要求的后面,此時要求str1的剩余空間要足夠的剩余空間要足夠n個字符。個字符。strcat函數可以轉換為函數可以轉換為strncat函數來調用。例如以下兩個函數調用是等效的:函數來調用。例如以下兩個函數調用是等效的:strcat(st1, str2);strncat(str1, str2, length(str2)

14、;聯系方式:http:/北京源智天下科技有限公司13.3 13.3 比較和轉換比較和轉換C標準庫提供了很多用于字符串比較和字符串轉換的操作函標準庫提供了很多用于字符串比較和字符串轉換的操作函數,由于篇幅的限制,本節只討論數,由于篇幅的限制,本節只討論strncmp函數和函數和strcmp函數、函數、strupr函數和函數和strlwr函數。它們分別提供了函數。它們分別提供了字符串比較和字符串大小寫轉換的功能。字符串比較和字符串大小寫轉換的功能。聯系方式:http:/北京源智天下科技有限公司strncmp函數是函數是C語言中用于比較字符串的函數。在語言中用于比較字符串的函數。在C語言語言中,字符

15、串之間的比較不能使用關系操作符直接進行。中,字符串之間的比較不能使用關系操作符直接進行。使用如下方式比較字符串的做法是錯誤的:使用如下方式比較字符串的做法是錯誤的:str1 str2由于字符數組名由于字符數組名str1和和str2代表的數值為字符串的首地址,代表的數值為字符串的首地址,因此該語句的作用是兩個字符串的首地址的比較,而不因此該語句的作用是兩個字符串的首地址的比較,而不是字符串內容的比較。是字符串內容的比較。C語言中為比較兩個字符串的大小語言中為比較兩個字符串的大小提供了提供了strncmp函數。其使用形式如下:函數。其使用形式如下:strncmp(str1, str2, n);聯系

16、方式:http:/北京源智天下科技有限公司其中其中str1和和str2都為字符串,都為字符串,n為整數。執行該語句后,為整數。執行該語句后,strncmp函數會比較字符串函數會比較字符串str1和字符串和字符串str2的前的前n個字個字符。字符串比較的規則為:符。字符串比較的規則為:將兩個字符串從左到右逐個字符相比較,直到出現第一個不將兩個字符串從左到右逐個字符相比較,直到出現第一個不相等的字符或遇到相等的字符或遇到0位置。位置。字符大小的判斷以字符的字符大小的判斷以字符的ASCII碼值為準,碼值為準,ASCII碼值較大碼值較大的字符其值較大。的字符其值較大。聯系方式:http:/北京源智天下

17、科技有限公司如果兩個字符串的所有字符都相等,則兩個字符相等。否則如果兩個字符串的所有字符都相等,則兩個字符相等。否則,以第一個不相等的字符的大小比較結果作為兩個字符,以第一個不相等的字符的大小比較結果作為兩個字符的比較結果。例如:的比較結果。例如:“great”和和“great”相等。相等。“great”和和“gre097t”相等相等,其中,其中097即為字符即為字符a。“great”小于小于“greeting”。因為它們的第。因為它們的第1個不相等字符為個不相等字符為第第4個字符,前者為個字符,前者為a,后者為,后者為e;因為;因為a比比e小小,所以前者小于后者。,所以前者小于后者。“gre

18、at”大于大于“GREAT”,因為,因為g的的ASCII碼值大于碼值大于G的的ASCII碼值。碼值。聯系方式:http:/北京源智天下科技有限公司strncmp函數的函數值為其比較結果。例如:函數的函數值為其比較結果。例如:i = strncmp(str1, str2, n);當當str1大于大于str2,則,則i為一正整數。為一正整數。當當str1小于小于str2,則,則i為一負整數。為一負整數。當當str1等于等于str2,則,則i為為0。聯系方式:http:/北京源智天下科技有限公司strncmp函數還有一個版本為函數還有一個版本為strcmp函數,該函數不需要函數,該函數不需要指定比較個數。由于指定

溫馨提示

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

最新文檔

評論

0/150

提交評論