第十章 字符串_第1頁
第十章 字符串_第2頁
第十章 字符串_第3頁
第十章 字符串_第4頁
第十章 字符串_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設計第十章 字符串 學習目標:字符串的輸入與輸出以及掌握字符串庫函數(shù)的應用。C語言程序設計10.1 用一維字符數(shù)組存放字符串用一維字符數(shù)組存放字符串v在C語言中有關字符串的基本概念:1)字符串的存儲結構借助于字符型數(shù)組來存儲字符串的。2)字符串的結束標志(0)。3)字符串常量用一對雙引號將一串字符括起來的。例如:“efegttyyht”4)字符數(shù)組與字符串的區(qū)別:字符數(shù)組不要求最后一個字符是0;字符串必須以0結束。C語言程序設計v在定義字符串時應注意:即: 一個字符型一維數(shù)組中的內容能否作為字符串使用,關鍵是看其末尾是否加入了結束標志0。不過在某些情況下,系統(tǒng)會自動加上0,在另一此特

2、定情況下,就需要人為加上0。C語言程序設計1)只要所賦初值個數(shù)少于元素個數(shù),系統(tǒng)自動加0。例如1: char str15=t,e,s,t;相當于:char str25=t,e,s,t,0;2)若采用單個字符賦初值來決定數(shù)組大小時,一定要人為加上0。例如2:char str3 =t,e,s,t,0;若是: char str4=t,e,s,t;3)在定義時直接賦字符串常量,這時不用人為加上0,但必須有存放0的空間。例如3:char str55=“test”;也等價于:char str65=“test”;也可以由字符串常量來決定數(shù)組元素的個數(shù)。例如: char str7 =“test”;C語言程序設

3、計10.2 使指針指向一個 字符串(P144)v通過賦初值的方式使指針指向字符串: 例如:char *pstr=“test”;即:把存放字符串常量“test”的無名存儲區(qū)的首地址賦給了指針pstr.test0pstrC語言程序設計通過賦值運算使指針指向字符串:例如:char s =“test”,*ps;1)把字符型一維數(shù)組的首地址賦給指針ps=s; 2)把字符型一維數(shù)組中某個元素的地址賦給指針ps=&s2;test0s2s0s1s3s4spstest0s2s0s1s3s4spsC語言程序設計10.2.3 用字符數(shù)組作為存儲結構的字符串和用指針指向的字符串之間的區(qū)別v例如: char s

4、 =“test1”; char *ps=“test2”;)數(shù)組名s是地址常量,不可以被重新賦值;ps是指針變量,可以被重新賦值。)定義了數(shù)組s其存儲空間就確定了,而指針ps還可以通過賦值的方式指向其他串常量ps=“a long string”; 新串的長度不受限制,而原串字符串“test2”將“丟失”。test10S數(shù)組:s0 s1 s2 s3 s4 s5test20無名存儲區(qū):psC語言程序設計10.3 字符串的輸入和輸出(P145)v字符串輸入和輸出的必要條件. 1)可以通過字符數(shù)組和字符型指針變量(指針變量必須指向具體的存儲空間)。 2)輸入時要保證有足夠的、確定的存儲空間, 用來存儲包

5、括串結束標志在內的所字符。 3)輸出時要保證輸出項中含有串結束標志。C語言程序設計v通過循環(huán)逐個輸入輸出字符串的內容。 例如:char str5; int i;1)在scanf和printf語句中使用描述符進行()。for(i=0;i4;i+) scanf(“%c”,&stri); stri=0;(人為輸入串結束標志)for(i=0;stri!=0;i+)printf(“%c”,stri);)使用getchar和putchar函數(shù)()字符串 for(i=0;i4;i+) stri=getchar(); stri=0; for(i=0;stri!=0;i+) putchar(stri);

6、 C語言程序設計在scanf和printf語句中使用%s進行整串()v例如:char str5,*pstr;1)利用數(shù)組名進行()scanf(“%s”,str); printf(“%s”,str);2)利用數(shù)組元素的地址進行()scanf(“%s”,&str2); printf(“%s”,&str2);注:輸入時,從str2開始存放字符,最多能輸入個字符,最后個單元留給0。輸出時,也從str2開始。以上語句等價于: scanf(“%s”,str+2); printf(“%s”,str+2);3)利用指針變量進行()pstr=str;/*指針必須指向具體存儲空間*/scanf(“

7、%s”,pstr); printf(“%s”,pstr);4)注意:使用%s進行輸入時,空格、換行符都作為分隔符而不能被讀入;輸出時,只要遇到第一個0就認為是串尾而結束輸出,但不自動換行。C語言程序設計調用gets和puts函數(shù)在終端()字符串v例如:char s80,*ps;)利用數(shù)組名進行() gets(s); puts(s); /*()都是從元素s0開始*/)利用數(shù)組元素的地址進行()gets(&s40); puts(&s40); /*()都是從元素s40開始*/)利用指針變量進行()ps=s+5; gets(ps); puts(ps); /*()都是從元素s5開始*/)

8、注意:使用gets函數(shù)讀入字符串時,是以換行符為結束標志,因此,空格作為串的組成部分被主動讀入;使用puts函數(shù)輸出時,遇到第一個0即結束,并且自動換行。C語言程序設計10.4 字符串數(shù)組(P146)v字符串數(shù)組數(shù)組中的每個元素又都是一個存放字符串的一維數(shù)組。C語言程序設計利用字符型二維數(shù)組構成字符串數(shù)組v例如:char ch34=“ab”,“dc”,“efh”;1)數(shù)組ch中可以存放個字符串,每個串中最多存放個字符,最后一個單元留給0。 即:存儲結構如下圖所示:2)可以利用循環(huán)對上述字符串數(shù)組進行輸入輸出例如:for(i=0;i3;i+) gets(chi); puts(chi); 注意:其

9、中chi代表每個字符串的首地址ab00dc00efh0ch0ch1ch2C語言程序設計利用字符型指針數(shù)組和串常量組成類似的字符串數(shù)組利用字符型指針數(shù)組和串常量組成類似的字符串數(shù)組v例如:char *ps3=“ab”,“cd”,“efh”;)ps是一個具有3個元素的數(shù)組,它的每一個元素都是一個字符型的指針。 a b 0c d 0e f h 0其存儲結構示意圖如下:其存儲結構示意圖如下:ps0ps1ps2C語言程序設計2)可以利用循環(huán)輸出上述字符串的內容: for(i=0;i3;i+) puts(psi);3)可以給ps數(shù)組元素所指空間重新賦字符串: for(i=0;i3;i+) gets(psi

10、);注意:輸入的字符個數(shù)不能超過原字符串中字符的個數(shù),因為存放輸入字符利用的是原字符串的無名存儲空間。C語言程序設計4)可以通過賦值使數(shù)組ps中的元素指向其他字符串常量。 例如:ps0=“abcdef”; 注意:這時原有存放字符串“ab”的空間被舍棄, ps0指向了新的字符串常量。5)可以通過賦值的方式使指針數(shù)組指向二維數(shù)組。 char ch34=“aa”,“bb”,“cc”,*ps; int i; for(i=0;i3;i+) psi=chi; 注意:這時,既可以通過二維數(shù)組ch引用字符串;又可以通過指針數(shù)組ps引用字符串。C語言程序設計10.5 用于字符串處理的函數(shù)(P148)vC語言規(guī)定

11、使用有關字符串處理庫函數(shù)時,應該要用包頭文件:#include。1)strlen(s)計算字符串長度的函數(shù)。 例如:strlen(“abc0 xyz”)的值是3。2)strcpy(s1,s2)字符串復制函數(shù)。 例如:char a =“aaa”,b4; 若要求把串a賦給串b,則應為:strcpy(b,a);3)strcmp(s1,s2)字符串比較函數(shù)。 功能:當s1大于s2時,函數(shù)值大于0; 當s1等于s2時,函數(shù)值等于0; 當s1小于s2時,函數(shù)值小于0;例如:if(strcmp(“abc”,”ijd”)0) C語言程序設計4)strcat(s1,s2)字符串連接函數(shù)。 功能:把串s2連接到串

12、s1后,并覆蓋串s1的結束符,所 以,s1要有足夠大的存儲空間。函數(shù)返回s1所指的地址值。 例如:char a20=“12345”,b =“6789”; 語句:strcat(a,b);和strcat(a+2,b); 具有同樣的效果。都是把字符串“6789”連到字符串“12345”的后面。如果是:strcat(a,b+2); 則是把字符串“89”連到字符串“12345”的后面。C語言程序設計v例子1:#include #includevoid main()char str20,str15; gets(str);gets(str1);strcat(str,str1);puts(str);10.6 程序舉例(P148)C語言程序設計#inc

溫馨提示

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

評論

0/150

提交評論