版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 3. 3. 字符串常量是用雙引號包圍的字符序列。字符串常量是用雙引號包圍的字符序列。 如:如:“chinachina”, ,作為字符串的結(jié)束標(biāo)志的作為字符串的結(jié)束標(biāo)志的0 0 可可 以不以不顯式寫出顯式寫出. .2. C2. C語言中約定用語言中約定用0 0 作為字符串的結(jié)束標(biāo)志作為字符串的結(jié)束標(biāo)志, ,它占內(nèi)存它占內(nèi)存空間,但不計入串的實(shí)際長度??臻g,但不計入串的實(shí)際長度。即即 “chinachina” “china china 0 0”1. 1. C C語言中沒有專門的字符串變量語言中沒有專門的字符串變量,因此利用字符型數(shù)組來,因此利用字符型數(shù)組來處理字符串。處理字符串。 答案:!答案:
2、!knaht8.2使指針指向字符串使指針指向字符串 n真題真題3:有下列程序:有下列程序:【2007.9】n#include nvoid fun(char *t,char *s)n while(*t! =0) t+ +;nwhile(*t+ + =*s+ +)!=0);nnmain()n char ss10= acc,aa10= bbxxyy;nfun(ss,aa); printf(%s,%sn,ss,aa);nn程序的運(yùn)行結(jié)果是(程序的運(yùn)行結(jié)果是( )。)。nA)accxyy,bbxxyy B)acc,bbxxyynC)accxxyy,bbxxyy D)accbbxxyy,bbxxyyn真題
3、真題4:下列程序的輸出結(jié)果是。:下列程序的輸出結(jié)果是?!?007.9】n#include n#include nchar *fun(char *t)n char *p=t;n return (p+strlen(t)/2);nnmain()n char *str=abcdefgh;n str=fun(str);n puts(str);n答案:答案:efgh用字符串處理函數(shù)用字符串處理函數(shù) gets 或或 puts 輸入輸出輸入輸出一個字符串一個字符串 1 gets( )函數(shù)函數(shù)專門用于輸入字符串專門用于輸入字符串 一般形式是一般形式是: gets(字符數(shù)組名字符數(shù)組名);其中:其中:函數(shù)參數(shù)只能
4、使用函數(shù)參數(shù)只能使用數(shù)組名數(shù)組名而不而不能是字符串常量能是字符串常量#include /* 必須加上必須加上*/#define LATH 80main() char nameLATH; printf(你好你好,請輸入姓名請輸入姓名:n); gets(name); printf(真是個好名字真是個好名字:%sn,name);例例 : gets( )函數(shù)函數(shù)v將用戶鍵入的將用戶鍵入的換行符之前換行符之前的所有字符的所有字符 ( (包括包括tt和和 ) )存入字符數(shù)組,然后加存入字符數(shù)組,然后加上上00, ,但換行符被丟掉但換行符被丟掉v不檢查用戶輸入字符串長度是否超過了字不檢查用戶輸入字符串長度是
5、否超過了字符數(shù)組的容納能力符數(shù)組的容納能力容易引起緩沖區(qū)溢出,容易引起緩沖區(qū)溢出,給黑客攻擊以可乘之機(jī)給黑客攻擊以可乘之機(jī) v scanf()不能讀入帶空格的字符串不能讀入帶空格的字符串,gets()可可以以其中其中2 puts()函數(shù)函數(shù)專門用于輸出字符串專門用于輸出字符串 一般形式是:一般形式是: puts(字符串字符串);v與與printf()的不同:的不同: puts()函數(shù)打印字符串的全部內(nèi)容函數(shù)打印字符串的全部內(nèi)容,直至遇到直至遇到0為止為止,然后然后自動多打印一個自動多打印一個n,起到換行起到換行的作用的作用。而。而printf函數(shù)無此功能。函數(shù)無此功能。#include#inc
6、lude#define PREDEF 這是預(yù)定義字符這是預(yù)定義字符串串main() char str=這是初始化字符串這是初始化字符串; puts(這是直接使用字符串常量這是直接使用字符串常量); puts(PREDEF); puts(str); 建議:建議: 當(dāng)多種類型的混合輸入輸出時當(dāng)多種類型的混合輸入輸出時,選用選用 scanf 和和 printf。 當(dāng)大量文字信息輸入輸出時,使用當(dāng)大量文字信息輸入輸出時,使用 gets 和和 puts。歷年真題8.4字符串?dāng)?shù)組字符串?dāng)?shù)組 p指針數(shù)組指針數(shù)組 一個數(shù)組中若一個數(shù)組中若每個元素每個元素都是都是一個指針一個指針p例如:定義一個指針數(shù)組并初始化
7、例如:定義一個指針數(shù)組并初始化 char *proname=“FORTRAN”, “C”, “C+”; p 數(shù)組的數(shù)組的每個元素每個元素是指向字符串常量的是指向字符串常量的字符指針字符指針,指針指向的字符串常量存放在的常量存儲區(qū)中,可指針指向的字符串常量存放在的常量存儲區(qū)中,可能連續(xù),也可能不連續(xù)。能連續(xù),也可能不連續(xù)。該字符數(shù)組的內(nèi)存表示如下:該字符數(shù)組的內(nèi)存表示如下:0088:22510088:22590088:225B0067:44000067:44020067:44040088:2251FORTRAN0C0C+00088:22522253225422552256225722582259
8、225A225B225C0088:225D0088:225EChar *proname 字符指針數(shù)組與字符二維數(shù)組的主要不同之處是:字符指針數(shù)組與字符二維數(shù)組的主要不同之處是:字符指字符指針數(shù)組元素指向的字符串可以是不規(guī)則的長度。針數(shù)組元素指向的字符串可以是不規(guī)則的長度。 字符二維數(shù)組的每個元素的長度必須相同,在定義時已確字符二維數(shù)組的每個元素的長度必須相同,在定義時已確定。例如:上例中定。例如:上例中 proname08個字節(jié)字符串個字節(jié)字符串 proname12個字節(jié)字符串個字節(jié)字符串 proname24個字節(jié)字符串個字節(jié)字符串 總字節(jié)數(shù)為總字節(jié)數(shù)為6+8=14在二維數(shù)組中:在二維數(shù)組中:
9、 char name38=“FORTRAN”, “C”, “C+” ; 共需共需3824個字節(jié)。個字節(jié)??梢娛褂米址羔様?shù)組更靈活方便可見使用字符指針數(shù)組更靈活方便。&q&v120p指針指針q指針指針v變量變量*p*p如下面定義:如下面定義: char *pc=“abc”, “def”, “hig”; char *ppc; /*定義定義ppc為二重指針為二重指針*/ ppc=pc; 顯然指針數(shù)組名顯然指針數(shù)組名ppc 就是一個二重指針。就是一個二重指針。main( ) int x, *q, *p; x=10; q=&x; p=&q; printf(“”%d”,*
10、p);輸出結(jié)果輸出結(jié)果: 13579歷年真題歷年真題1 strcat()函數(shù)()函數(shù)功能:用于連結(jié)兩個字符串。功能:用于連結(jié)兩個字符串。一般形式:一般形式: strcat(字符串字符串1,字符串字符串2); 將將字符串字符串2連結(jié)到連結(jié)到字符串字符串1的后面的后面注意:注意:(1) strcat函數(shù)不檢查字符串函數(shù)不檢查字符串1的空白位置是否裝得下的空白位置是否裝得下字符串字符串2。連結(jié)前應(yīng)用。連結(jié)前應(yīng)用strlen函數(shù)進(jìn)行檢驗(yàn),確保不發(fā)函數(shù)進(jìn)行檢驗(yàn),確保不發(fā)生溢出。生溢出。(2) 長度加,為新字符串的結(jié)束符長度加,為新字符串的結(jié)束符0留一個位置留一個位置。其中:參數(shù)其中:參數(shù)1必須是必須是字
11、符數(shù)組名字符數(shù)組名,而參數(shù),而參數(shù)2可以是可以是字字符串常量或數(shù)組名符串常量或數(shù)組名。例例 :#include#include#define SIZE 30main() char bookSIZE; char msg=的確是本好書的確是本好書!; puts(你喜歡什么書你喜歡什么書?); gets(book); if(strlen(book)+strlen(msg)+1=SIZE) /*長度加長度加1,為新串的為新串的0留一個位置留一個位置*/ strcat(book,msg);puts(book); else puts(“字符數(shù)組空間不夠字符數(shù)組空間不夠,無法進(jìn)行連結(jié)無法進(jìn)行連結(jié)!”);2
12、strcpy()函數(shù)()函數(shù)功能:用于實(shí)現(xiàn)兩個字符串的拷貝。功能:用于實(shí)現(xiàn)兩個字符串的拷貝。一般形式:一般形式: strcpy(字符串(字符串1,字符串字符串2) 將將字符串字符串2拷貝到拷貝到字符串字符串1中中 其中:其中:字符串字符串1必須是必須是字符數(shù)組名字符數(shù)組名,不能是字符串常量。不能是字符串常量。 注意:注意:由于字符串是數(shù)組類型由于字符串是數(shù)組類型,所以兩個字符串復(fù)制不能通過所以兩個字符串復(fù)制不能通過賦值運(yùn)算進(jìn)行。賦值運(yùn)算進(jìn)行。如:如: t=s;錯誤的字符串復(fù)制錯誤的字符串復(fù)制*/ strcpy(t,s);正確的字符串復(fù)制正確的字符串復(fù)制例例10:#include#include
13、#define SIZE 80main() char s =Chinese; char tSIZE; printf(原字符串是原字符串是%sn,s); strcpy(t,s); printf(拷貝的字符串是拷貝的字符串是%sn,t); printf(拷貝后原字符串是拷貝后原字符串是%sn,s);3 strcmp()函數(shù)()函數(shù)功能:比較兩個字符串的大小。功能:比較兩個字符串的大小。一般形式:一般形式: i=strcmp(字符串字符串1,字符串,字符串2);比較方法:從左至右逐個比較其比較方法:從左至右逐個比較其ASCII碼值碼值大小大小其中:其中:(1)字符串字符串1、字符串、字符串2均可為字
14、符串常量或數(shù)組名均可為字符串常量或數(shù)組名.(2) i 是用于存放比較結(jié)果的整型變量。是用于存放比較結(jié)果的整型變量。比較結(jié)果的規(guī)定:比較結(jié)果的規(guī)定:字符串字符串1字符串字符串2,函數(shù)返回一個正值。,函數(shù)返回一個正值。#include#includemain() int i; i=strcmp(A,A); printf(%dn,i); i=strcmp(A,B); printf(%dn,i); printf(%dn,strcmp(B,A); printf(%dn,strcmp(C,A); printf(%dn,strcmp(disk,disks);例例正確的做法是用正確的做法是用strcmp函數(shù)進(jìn)
15、行比較。函數(shù)進(jìn)行比較。 if(strcmp(ABC ,DEF)字符串的比較是比較字符串中字符串的比較是比較字符串中各對各對字符的字符的ASCII碼。因此無論兩個字符串是什么樣,碼。因此無論兩個字符串是什么樣,strcmp函數(shù)最多比較到其中一個字符串遇到函數(shù)最多比較到其中一個字符串遇到結(jié)束符結(jié)束符0為止。為止。 如:如:if(“ABC”“DEF”) 注意:字符串是數(shù)組類型而非簡單類型,注意:字符串是數(shù)組類型而非簡單類型,不能用關(guān)系運(yùn)算進(jìn)行大小比較。不能用關(guān)系運(yùn)算進(jìn)行大小比較。#include#include#define SIZE 80#define PASSWORD zhang #define TIMES 3main() int try; char inputSIZE; try=0; /*猜測次數(shù)變量清猜測次數(shù)變量清0*/ puts(請輸入密碼請輸入密碼); do gets(input); if(strcmp(input, PASSWORD)!=0) puts(密碼輸入錯密碼輸入錯,請再試一次請再試一次); else break; while(+tryTIMES); /*如果少于如果少于TIMES次次,允許再試允許再試*/ if(tryTIMES) /*在規(guī)定次數(shù)內(nèi)輸入正確在規(guī)定次
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版再婚夫妻離婚規(guī)定3篇
- 梅河口康美職業(yè)技術(shù)學(xué)院《數(shù)學(xué)課程與教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 眉山藥科職業(yè)學(xué)院《擴(kuò)聲技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年物流運(yùn)輸服務(wù)合同標(biāo)的詳細(xì)描述
- 馬鞍山學(xué)院《形態(tài)學(xué)整合實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年勞動合同樣本新編3篇
- 2024年標(biāo)準(zhǔn)化電腦與辦公設(shè)備采購協(xié)議范例版B版
- 漯河醫(yī)學(xué)高等??茖W(xué)?!堵殬I(yè)教育經(jīng)濟(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 漯河食品職業(yè)學(xué)院《植物營養(yǎng)診斷與施肥(實(shí)驗(yàn))》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年創(chuàng)新型門面房租賃合作協(xié)議6篇
- NB∕T 13007-2021 生物柴油(BD100)原料 廢棄油脂
- GB/T 20624.2-2006色漆和清漆快速變形(耐沖擊性)試驗(yàn)第2部分:落錘試驗(yàn)(小面積沖頭)
- GB/T 12771-2019流體輸送用不銹鋼焊接鋼管
- GB/T 10125-2012人造氣氛腐蝕試驗(yàn)鹽霧試驗(yàn)
- 維修電工-基于7812穩(wěn)壓電路(中級)-動畫版
- PV測試方法簡介-IV
- 病理學(xué)實(shí)驗(yàn)切片考試圖片授課課件
- 2021離婚協(xié)議書電子版免費(fèi)
- 國家開放大學(xué)《組織行為學(xué)》章節(jié)測試參考答案
- 電子課件機(jī)械基礎(chǔ)(第六版)完全版
- 臨沂十二五城市規(guī)劃研究專題課件
評論
0/150
提交評論