C語(yǔ)言提高ppt課件_第1頁(yè)
C語(yǔ)言提高ppt課件_第2頁(yè)
C語(yǔ)言提高ppt課件_第3頁(yè)
C語(yǔ)言提高ppt課件_第4頁(yè)
C語(yǔ)言提高ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩111頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.1第第1章章 語(yǔ)言提高語(yǔ)言提高.2概述l1.1 基本數(shù)據(jù)類型、操作符、表達(dá)式基本數(shù)據(jù)類型、操作符、表達(dá)式 l1.2 語(yǔ)句語(yǔ)句 l1.3 數(shù)組數(shù)組l1.4 指針指針l1.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l1.6 函數(shù)函數(shù)l1.7 存儲(chǔ)類型存儲(chǔ)類型l1.8 預(yù)編譯預(yù)編譯l1.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l1.10 其它庫(kù)函數(shù)操作其它庫(kù)函數(shù)操作.31.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l在C語(yǔ)言中,變量的聲明格式是:類型 變量;l例: int x = 5; sizeof(int)&xx=5圖圖1.1 1.1 變量變量x x內(nèi)存解釋內(nèi)存解釋 .41.1 基本

2、數(shù)據(jù)類型、操作符、表達(dá)式數(shù)據(jù)類型數(shù)據(jù)類型構(gòu)造類型構(gòu)造類型指針類型指針類型空類型空類型基本類型基本類型字符類型字符類型整型整型枚舉類型枚舉類型單精度類型單精度類型實(shí)型實(shí)型雙精度類型雙精度類型數(shù)組類型數(shù)組類型結(jié)構(gòu)類型結(jié)構(gòu)類型共同體類型共同體類型.51.1 基本數(shù)據(jù)類型、操作符、表達(dá)式類型類型含義含義大小大小實(shí)例實(shí)例常量常量int整型整型sizeof(int)int i;100, 0 x100,0100short intshort短整型短整型2short s;(short)100long intlong長(zhǎng)整型長(zhǎng)整型 4long l;100L, (long)100float單精度類型單精度類型4flo

3、at x;0.1fdouble long double雙精度類型雙精度類型8double d;0.1,0.1dchar字符型字符型1char c;100, 0, 0, a, n.61.1 基本數(shù)據(jù)類型、操作符、表達(dá)式lunsigned、signed修飾 l十六進(jìn)制、十進(jìn)制、八進(jìn)制表示 l字符常量表示及編碼 l轉(zhuǎn)義符(0,n,t等)l邏輯類型的規(guī)定.71.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式1算術(shù)操作符算術(shù)操作符 算術(shù)操作符含義實(shí)例+算術(shù)加法4.0+7,4+7-算術(shù)減法7-5,7-5.0*算術(shù)乘法7*67,7*67.0/算術(shù)除法5/6,5.0/6%模運(yùn)算:整

4、除取余數(shù)17%7.81.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 2.關(guān)系操作符關(guān)系操作符 關(guān)系操作符 含義實(shí)例小于xy=小于等于x大于xy=大于等于x=y=相等x=y!=不等x!=y.91.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 2.關(guān)系操作符關(guān)系操作符l“x y 右移操作 92 ,結(jié)果為2 ,相當(dāng)于9/22左移操作 92,結(jié)果為36,相當(dāng)于9*22.131.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 5移位操作符移位操作符例1.1:我們可以將x的第3至第7位置為 x=0 x444

5、44444;int y=7;x=(x&0 xffffff07)|(y3;printf(n%x,y);.151.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 6條件表達(dá)式操作符條件表達(dá)式操作符 l“? :” 表達(dá)式表達(dá)式l例:計(jì)算例:計(jì)算y年的天數(shù):若年的天數(shù):若y是閏年,則是閏年,則366天,否則天,否則365天。用天。用C表達(dá)如下:表達(dá)如下:isLeap(y)?366:365.161.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 7. 賦值操作符賦值操作符l =+=-=*=/=%=&=|=.171.1 基本數(shù)據(jù)類型、

6、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 7. 賦值操作符賦值操作符l應(yīng)用形式為:左值左值 賦值操作符賦值操作符 表達(dá)式表達(dá)式例: x%=7意義是計(jì)算 “x%7” 的結(jié)果,送給 x 空間,其值是最后 x 的值。注意:無分號(hào)。有分號(hào)時(shí)是語(yǔ)句。l“x=y=6” 表達(dá)正確嗎?.181.1 基本數(shù)據(jù)類型、操作符、表達(dá)式l1.1.2 操作符、表達(dá)式操作符、表達(dá)式 8逗號(hào)表達(dá)式逗號(hào)表達(dá)式 l逗號(hào)表達(dá)式的形式如下:表達(dá)式表達(dá)式, , 表達(dá)式表達(dá)式,表達(dá)式表達(dá)式 l例:char c=100;printf(%i,(c+1,c+2,c+3);.191.2 語(yǔ)句l賦值語(yǔ)句文法賦值表達(dá)式;x+;+x;

7、x-;-x;.201.2 語(yǔ)句l賦值語(yǔ)句自加(減)賦值自加(減)賦值x+;+x;x-;-x;例:例:int x=5;int x=5;int y;int y;y=x+;y=x+;printf(nx=%d,y=%d,x,y);printf(nx=%d,y=%d,x,y);x=5;x=5;y=+x;y=+x;printf(nx=%d,y=%d,x,y);printf(nx=%d,y=%d,x,y);求值加1賦值x+先后+x后先.211.2 語(yǔ)句l條件語(yǔ)句文法if ( E )S或if ( E )S1elseS2判 定 條 件真語(yǔ) 句 1假圖1.2 分支語(yǔ)句流程圖判 定 條 件真語(yǔ) 句 1語(yǔ) 句 2假圖

8、1.3 分支語(yǔ)句流程圖.221.2 語(yǔ)句l復(fù)合語(yǔ)句文法說明部分語(yǔ)句部分復(fù)合語(yǔ)句書寫規(guī)范.231.2 語(yǔ)句l循環(huán)語(yǔ)句while語(yǔ)句for語(yǔ)句do-while語(yǔ)句.241.2 語(yǔ)句l循環(huán)語(yǔ)句while語(yǔ)句while( E )S循環(huán)條件語(yǔ)句真假圖1.4 while循環(huán)的流程圖.251.2 語(yǔ)句l循環(huán)語(yǔ)句while語(yǔ)句int getSum(int m) int sum=0; int i=1; while(iy); x+; y-;例:例:for(i=0;i10;i+); .311.2 語(yǔ)句lgoto 語(yǔ)句文法goto 標(biāo)號(hào);.321.2 語(yǔ)句lswitch 語(yǔ)句文法switch(表達(dá)式) case I1

9、: S11 S12 S13 case l2: S21 S22 S23 default: S01 S02 S03 .331.2 語(yǔ)句lswitch 語(yǔ)句int k=1;char c=A;do switch(c+)case A: k*=2; break;case B: k+=2;continue;case C: k%=3;default: k+;case D: k/=3; k+;while(c= 2000) for (i = 2000; i y; i+) sum += getYearDays(i); return (sum + 6) % 7; else for (i = y; i 2000; i+

10、) sum += getYearDays(i); return ( -sum + 6) % 7; .39綜合訓(xùn)練S2 計(jì)算y年m月第一天的星期;int getMonthWeekDay(int y, int m) int sum = 0; int i; for (i = 1; i m; i+) sum += getMonthDays(y, i); return (getYearWeekDay(y) + sum ) % 7;.40綜合訓(xùn)練S3 打印y年的日歷:對(duì)y年的每一月,執(zhí)行打印操作。void printYear(int y) int i; count=1; for(i=1;i=12;i+)

11、printMonth(y,i); .41void printMonth(int y, int m) int i=0; int w; printf(n* %d月月 *n,m); w = getMonthWeekDay(y, m); if(w=0) printf(n%-7d,count); count+; else printf( ); for (i = 0; i w; i+) printf( ); for (i = 1; i = getMonthDays(y, m); i+) printf( %7i, i); w+; w %= 7; if (w = 0 & igetMonthDays(y

12、,m) printf(n%-7d,count); count+; .421.3 數(shù)組數(shù)組l一維數(shù)組一維數(shù)組的聲明形式是:類型類型 數(shù)組變量數(shù)組變量 數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度; ;如:int a 10 ;a+1a 9 1 a+910*sizeof(int) 0 圖1.9 int a10聲明的內(nèi)存圖示&a+1a a是緩沖區(qū)的開始地是緩沖區(qū)的開始地址,是常地址址,是常地址。.431.3 數(shù)組數(shù)組l一維數(shù)組&a+1:表示下一個(gè)a10空間的地址;a+1:表示下一個(gè)整數(shù)空間的地址。類型類型地址地址大小大小a aint 10int 10a(a(等于等于&a&a,但類型,但類型不同不同

13、) )1010* *sizeof(int)sizeof(int)aiaiintinta+i(a+i(等價(jià)于等價(jià)于&ai)&ai)sizeof(int)sizeof(int).441.3 數(shù)組數(shù)組l一維數(shù)組運(yùn)算符 地址表達(dá)式例:若有聲明int x,a10,從文法上,下式都是正確的。a-1a100(&a3)-2(&x)0.451.3 數(shù)組數(shù)組l二維數(shù)組二維數(shù)組的說明形式如下:類型類型 數(shù)組變量名數(shù)組變量名 長(zhǎng)度長(zhǎng)度11長(zhǎng)度長(zhǎng)度2;2;.461.3 數(shù)組數(shù)組l二維數(shù)組如:int aa23;圖1-10 int a23聲明的內(nèi)存圖示aa+1aa 1 1 0 0 0 1 a

14、a1+12*3*sizeof(int)aa1+2 0 2 1 0 1 2 aa0+1&aa+1aa0+2.471.3 數(shù)組數(shù)組l二維數(shù)組類型地址大小aaint 23 aa(等于&aa)2*3*sizeof(int)aaiint3aa+i(等價(jià)于&aai)3*sizeof(int)aaij intaai+j(等價(jià)于&aaij)sizeof(int).481.3 數(shù)組數(shù)組l多維數(shù)組int aaa234;類型地址大小aaaint 234aaa(等于&aaa)2*3*4*sizeof(int)aaaiint34aaa+i(等價(jià)于&aaai)3*4*siz

15、eof(int)aaaijint4aaai+j(等價(jià)于&aaaij)4*sizeof(int)aaaijk intaaaij+k(等價(jià)于&aaaijk)sizeof(int).491.4 指針指針l指針指針的聲明形式是:類型類型 * 指針變量指針變量;例如:int * p;sizeof(int *)&pp: int *圖1.11 指針變量?jī)?nèi)存空間.501.4 指針指針l指針*p表示p所指空間的內(nèi)容含義類型地址大小p指針變量int *&psizeof(int *)*p所指的內(nèi)存單元的內(nèi)容intpsizeof(int).511.4 指針指針l指針例1.14:int

16、x=0;int *p;p=&x;*p=6;printf(“nx=%d”,x);圖1.12 指針變量引用整型變量空間p: int *sizeof(int)p&xx*p=6.521.4 指針指針l指針例:int a10;int *p;p=a;pa圖1.13 指針變量引用數(shù)組變量空間p: int * 9 0 *p 1 10*sizeof(int)p+9p+1.531.4 指針指針l指針“*” 和 “&”是運(yùn)算符形式類型變化意義實(shí)例int *p;*地址 在地址類型基礎(chǔ)上減一個(gè)*求地址空間中的內(nèi)容*p: int&左值表達(dá)式或&數(shù)組變量 在原類型的基礎(chǔ)上加一個(gè)*求地

17、址&p: int * .541.4 指針指針l指針-注意類型例1.16:int i;long l=0 xf1f2f3f4;char c4;for(i=0;i=2)y=atoi(*(argv+1);if(argc=3)m=atoi(*(argv+2);printMonth(y,m);elseprintYear(y);return 1;.581.4 指針指針例例1.19:命令行參數(shù)的獲取:命令行參數(shù)的獲取圖圖1.18 argv1.18 argv內(nèi)存示意圖內(nèi)存示意圖*argvMyDate020100*(argv+1)20*(argv+2)char *char *argvargv:char *

18、argv+1char *argv+2.591.4 指針指針l字符串C語(yǔ)言中的字符串實(shí)質(zhì)上是這個(gè)緩沖區(qū)的首地址。一個(gè)字符串,它是自標(biāo)志的,字符串的結(jié)束是以0標(biāo)志的。l常字符串,如 “hello” hello0hello圖1.16 字符串常量的內(nèi)存圖示.601.4 指針指針l字符串操作-拷貝char * strcpy(char * s1,char * s2) int i; for(i=0;*(s2+i)!=0;i+) *(s1+i)=*(s2+i); *(s1+i)=0; return s1;.611.4 指針指針字符串操作-連接char * strcat(char * s1,char * s2)

19、 int i, j; for(j=0;*(s1+j)!= 0;j+); for(i=0;*(s2+i)!=0;i+) *(s1+j+i)=*(s2+i); *(s1+j+i)=0; return s1;.621.4 指針指針l字符串操作-比較int strcmp(char * s1,char * s2) int i; for(i=0;*(s1+i)!= 0 & *(s2+i)!=0 & *(s1+i)=*(s2+i) ;i+); return *(s1+i)-*(s2+i);.631.4 指針指針l字符串操作-計(jì)算長(zhǎng)度int strlen(char * s1) int i; f

20、or(i=0;*(s1+i)!= 0 ;i+); return i;.641.4 指針指針考慮下面代碼的執(zhí)行結(jié)果:char str25;strcpy(str0,hello);strcpy(str1,hi);.651.4 指針指針l指針數(shù)組int * pInt8;char * str=“請(qǐng)輸入整數(shù)”,“x=%d”,“除法錯(cuò)誤”;.661.4 指針指針l數(shù)組指針int * pList4;int (* pItem)4;sizeof(int *4)&pItempItem:int(*)40:int *1:int *2:int *3:int *pList圖1.19指針數(shù)組與數(shù)組指針內(nèi)存圖示.671

21、.4 指針指針l數(shù)組指針int getTotal(int (* item)4)int i;int sum=0;for(i=0;i4;i+)sum+=*(*item+i);return sum;.681.4 指針指針l數(shù)組指針int main() int i; int items44=1,3,4,5,2,4,5,3,5,6,3,2,6,4,3,1; for(i=0;iname*pStu struct stupStusizeof(struct stu)(*pStu).name.741.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l聯(lián)合體聯(lián)合體union 聯(lián)合體名聯(lián)合體名 類型類型 域變量域變量; ;類型類型 域變

22、量域變量; ;.751.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l聯(lián)合體聯(lián)合體union tag struct int w,h; rect; int r; int d; ;union tag shape;圖1.22 聯(lián)合變量shape的內(nèi)存結(jié)構(gòu)圖示&shaperect.wR, drect.hsizeof(int)sizeof(int)&shape+1.761.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l聯(lián)合體聯(lián)合體union iaddr unsigned long ip; unsigned char byte4; ;sizeof(union iaddr)=4。.771.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l位域

23、位域struct unsigned int f1:3; unsigned int f2:3; unsigned int f3:3;q;&q 圖圖1.23 1.23 位域內(nèi)存圖示位域內(nèi)存圖示 f3 f3 f1f2f2.781.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l鏈表結(jié)點(diǎn)的定義鏈表結(jié)點(diǎn)的定義typedef struct stagint key;struct stag *next;SNODE; / /單向鏈表結(jié)點(diǎn)的定義單向鏈表結(jié)點(diǎn)的定義typedef struct dtagint key;struct dtag *previous,*next;DNODE; / /雙向鏈表結(jié)點(diǎn)的定義雙向鏈表結(jié)點(diǎn)的定

24、義.791.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l鏈表結(jié)點(diǎn)的操作鏈表結(jié)點(diǎn)的操作void insertAtHead(SNODE * head,SNODE *);SNODE * createSNode(int key);void deleteAtTail(SNODE * head);void traversal(SNODE * head);.801.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l二叉樹結(jié)點(diǎn)的定義二叉樹結(jié)點(diǎn)的定義typedef struct t2Tag int key;struct t2Tag * left,*right; T2NODE;.811.5 結(jié)構(gòu)和聯(lián)合體結(jié)構(gòu)和聯(lián)合體l樹結(jié)點(diǎn)的定義樹結(jié)點(diǎn)的定義typ

25、edef struct tTag int key; struct tTag * parent;struct tTag *elderBrother,*brother; struct tTag * children; TNODE;.821.6 函數(shù)函數(shù)l函數(shù)的定義格式是:返回類型 函數(shù)名(參數(shù)表) 函數(shù)體 l函數(shù)的調(diào)用格式是:函數(shù)名(實(shí)際參數(shù));l函數(shù)原型聲明的格式為:返回類型 函數(shù)名(參數(shù)表);.831.6 函數(shù)函數(shù)l參數(shù)傳遞函數(shù)定義時(shí)的參數(shù)稱為形式參數(shù),函數(shù)調(diào)用時(shí)的參數(shù)稱為實(shí)際參數(shù)。當(dāng)函數(shù)調(diào)用時(shí),首先在棧區(qū)內(nèi)分配形式參數(shù)的內(nèi)存空間,然后計(jì)算實(shí)際參數(shù)的值,并將實(shí)際參數(shù)的值傳給形式參數(shù)的空間。(對(duì)

26、程序執(zhí)行效率的影響?).841.6 函數(shù)函數(shù)l參數(shù)傳遞void f(int);void f1(int *);int main() int x=100; f(x); printf(x=%d,x); f1(&x); printf(x=%d,x);void f(int x)int y=100;x+=100;void f1(int * x)int y=100;*x+=y; .851.6 函數(shù)函數(shù)l參數(shù)傳遞void f2(int);int main() int a=1,2,3;f2(a);printf(%d-%d-%d,a0,a1,a2);void f2(int a3)a0=4;a1=3;a2=

27、2;在參數(shù)傳遞時(shí),它將在參數(shù)傳遞時(shí),它將數(shù)組的地址傳給形參,數(shù)組的地址傳給形參,在函數(shù)執(zhí)行時(shí),改變?cè)诤瘮?shù)執(zhí)行時(shí),改變的是同一數(shù)組的元素的是同一數(shù)組的元素值。值。 .861.6 函數(shù)函數(shù)l函數(shù)指針定義形式返回類型 (* 函數(shù)指針變量)(參數(shù)表);l函數(shù)指針是一個(gè)指針變量,與一般指針不同的是,它是指向代碼區(qū)的,而不是指向數(shù)據(jù)區(qū)的指針。l例:void (*pf)(); .871.6 函數(shù)函數(shù)l函數(shù)指針void open(); /* open的原型聲明 */void print();/* print的原型聲明 */void exitIt(); /* exitIt的原型聲明 */void (*pfs)(

28、)=open,print,exitIt; /* 函數(shù)指針數(shù)組 */int main() int i; void (*pf)(); pf=open; (*pf)(); /* 調(diào)用open */ for(i=0;i3;i+)(*pfsi)(); /* 依次調(diào)用函數(shù)open、print、exitIt */ .881.6 函數(shù)函數(shù)l其中void open()printf(open);void print()printf(print);void exitIt()printf(exit);.891.6 函數(shù)函數(shù)l例:以下定義的意義void (*getInterrupt(int no)();void set

29、Interrupt(int no, void (*pf)();LRESULT (* lpfnWndProc)(HWND,UINT,WPARM,LPARAM);.901.7 存儲(chǔ)類型存儲(chǔ)類型lC中變量的完整說明形式是:存儲(chǔ)類型 數(shù)據(jù)類型 變量;lC中存儲(chǔ)類型registerauto(默認(rèn)存儲(chǔ)類型)staticextern.911.7 存儲(chǔ)類型存儲(chǔ)類型lstatic存儲(chǔ)類型存儲(chǔ)類型在函數(shù)內(nèi)定義時(shí),在函數(shù)內(nèi)定義時(shí),staticstatic作用范圍在函數(shù)內(nèi),但在作用范圍在函數(shù)內(nèi),但在運(yùn)行期間一直存在。運(yùn)行期間一直存在。在函數(shù)外定義時(shí),從定義點(diǎn)開始有效,但只限于在函數(shù)外定義時(shí),從定義點(diǎn)開始有效,但只限于

30、本文件使用。在程序運(yùn)行期間一直存在。本文件使用。在程序運(yùn)行期間一直存在。.921.7 存儲(chǔ)類型存儲(chǔ)類型lstatic存儲(chǔ)類型存儲(chǔ)類型-下面代碼打印出什么,為什么?下面代碼打印出什么,為什么?int main() void print(); print(); print(); print(); void print() static int i=0; printf(%d-,i+); .931.7 存儲(chǔ)類型存儲(chǔ)類型lextern存儲(chǔ)類型存儲(chǔ)類型在函數(shù)內(nèi)時(shí),引用函數(shù)外定義的量。在函數(shù)內(nèi)時(shí),引用函數(shù)外定義的量。在函數(shù)外時(shí),引用其它文件定義的量。在函數(shù)外時(shí),引用其它文件定義的量。 總之,總之,exter

31、n extern 變量,不分配內(nèi)存。變量,不分配內(nèi)存。.941.8 預(yù)編譯預(yù)編譯l宏定義可用于定義值或定義一些功能,其形式是:#define 預(yù)編譯 量#define預(yù)編譯量 值#define預(yù)編譯量(參數(shù), 參數(shù).) 功能定義.951.8 預(yù)編譯預(yù)編譯l宏定義例子#define PRINT#define PI 3.14159265#define子子 LEN 200#define HIWORD(l) *(short*)&l+1)#define LOWORD(l) *(short*)&l).961.8 預(yù)編譯預(yù)編譯l宏定義l例如求一個(gè)量平方的宏定義的各種寫法:#define SQ

32、UARE(x) x*x#define SQUARE(x) (x*x)#define SQUARE(x) (x)*(x)#define SQUARE(x) (x)*(x).971.8 預(yù)編譯預(yù)編譯l宏引用形如:#include 文件名l例:#include stdio.h#include malloc.h“l(fā)在引用位置引入指定文件(任意文件)的內(nèi)容。 .981.8 預(yù)編譯預(yù)編譯l條件編譯#define PRINTint main() #ifdef PRINT /*若定義了PRINT,則下面代碼參與編譯*/printf(nPRINT is defined.);#endif#ifndef PRINT

33、 /*若未定義PRINT,則下面代碼參與編譯*/printf(nPRINT is not defined.);#endif#ifdef PRINT /*若定義了PRINT,則下面代碼參與編譯*/printf(nPRINT is defined.);#else /*否則,即若未定義PRINT,則下面代碼參與編譯*/printf(nPRINT is not defined.);#endifprintf(nend);.991.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l 控制臺(tái)操作控制臺(tái)操作 int printf(const char *, .);int scanf(con

34、st char *, .);.1001.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l 控制臺(tái)操作控制臺(tái)操作 printf(n%d,%ld,%10d,%10ld,6,6L,6,6L);printf(n%x,%5lx,64,64);printf(n%o,%5o,64,64);printf(n%u,%5u,65,-1);printf(n%c,%5c,65,A);printf(n%s,%10s,hello,hello);printf(n%f,%10.3f,6.0,6.00);printf(n%e,%10.3e,6.0,6.00);1.printf(n%g,%10.3g,6.0

35、,6.00);.1011.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l 控制臺(tái)操作控制臺(tái)操作 int x; long l; scanf(%d,%ld,&x,&l);int x,y; scanf (%x,%lx,&x,&y);int x,y; scanf (%o,%lo,&x,&y);unsigned int x; scanf (%u,&x);char c1; scanf (%c,&c1);char s120; scanf (%s,s1);float r1; double r2; 1.scanf (%f,%

36、lf,&r1,&r2 );.1021.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l 文件操作文件操作讀取操作時(shí)有三個(gè)步驟:打開文件,讀寫操作,關(guān)閉文件,以釋放文件所占的各種緩沖區(qū)。.1031.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l打開文件 FILE * fopen(const char *, const char *);l打開文件“c:tttt.txt”。char * path=c:tttt.txt;FILE * stream;if(NULL=(stream=fopen(path,rb)printf(File %s do

37、esnt exist.,path); exit(0);.1041.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l打開文件方式r:打開文件用于輸入文件必須存在,否則無法打開w:打開文件用于輸出文件若存在,則刪除重新建立a:打開文件用于在文件尾追加數(shù)據(jù)。文件必須存在,否則無法打開r+:打開文件用于讀、寫文件必須存在,否則無法打開.1051.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l 讀寫操作讀寫操作-文件狀態(tài)文件狀態(tài)函數(shù)函數(shù)feoffeof可判定指定的輸入流是否結(jié)束。其原型定義:可判定指定的輸入流是否結(jié)束。其原型定義:int feof(FILE

38、int feof(FILE * *); );若處于文件尾(若處于文件尾(end of fileend of file),則返回真(),則返回真(1 1),否則返回假),否則返回假(0 0)。)。函數(shù)函數(shù)ferrorferror可判定指定的流是否出錯(cuò),若有錯(cuò)誤,則返回可判定指定的流是否出錯(cuò),若有錯(cuò)誤,則返回1 1,否則返回否則返回0 0。其原型定義如下:。其原型定義如下:int ferror(FILEint ferror(FILE *); .1061.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l讀寫操作讀寫操作-讀寫字符讀寫字符函數(shù)函數(shù)getcgetc和和fgetcfg

39、etc都是按字符讀入內(nèi)容,其原型定義如下:都是按字符讀入內(nèi)容,其原型定義如下:int getc(FILE *);int fgetc(FILE *);例:例:while(!feof(stream)while(!feof(stream)int ch=getc(stream);int ch=getc(stream);/ /這里應(yīng)是處理代碼這里應(yīng)是處理代碼. .1071.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l讀寫操作讀寫操作-格式讀寫格式讀寫按指定的格式讀、寫文件流的操作函數(shù)是按指定的格式讀、寫文件流的操作函數(shù)是以下兩個(gè)函數(shù):以下兩個(gè)函數(shù):int fprintf(FIL

40、E *, const char *, .);int fscanf(FILE *, const char *, .);(有差別嗎?)(有差別嗎?).1081.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l讀寫操作讀寫操作-塊讀寫塊讀寫函數(shù)函數(shù)fwrite將指定緩沖區(qū)中的內(nèi)容寫入文件中,函將指定緩沖區(qū)中的內(nèi)容寫入文件中,函數(shù)數(shù)fread將文件中的內(nèi)容讀到指定的緩沖區(qū)中。它將文件中的內(nèi)容讀到指定的緩沖區(qū)中。它們的原型聲明如下:們的原型聲明如下:size_t fwrite(const void *, size_t, size_t, FILE *);size_t fread(vo

41、id *, size_t, size_t, FILE *);.1091.9 有緩沖方式的文件操作及控制臺(tái)操作有緩沖方式的文件操作及控制臺(tái)操作l讀寫操作讀寫操作-文件指針操作文件指針操作函數(shù)函數(shù)fseekfseek改變文件指針的位置。其原型聲明為:改變文件指針的位置。其原型聲明為:int fseek(FILE int fseek(FILE * *, long, int);, long, int);其中第三個(gè)參數(shù)可選三個(gè)值:其中第三個(gè)參數(shù)可選三個(gè)值:0 0、1 1、2 2。0 0表示以文件頭為參照,表示表示以文件頭為參照,表示以當(dāng)前位置為參照,以當(dāng)前位置為參照,2 2表示以文件尾為參照。第二個(gè)參數(shù)表示距參照表示以文件尾為參照。第二個(gè)參數(shù)表示距參照點(diǎn)的距離,類型為長(zhǎng)整數(shù)。點(diǎn)的距離,類型為長(zhǎng)整數(shù)。函數(shù)函數(shù)ftellftell可得到文件指針的位置。可得到文件指針的位置。long ftell(FILE long ftell(FILE * *); );函數(shù)函數(shù)rewindrewind將文件指針返回文件開始位置。將文件指針返回文件開始位置。void rewind(FILE void rewind(FILE * *); );.1101.9 有緩沖方式的文件操作及控制臺(tái)操

溫馨提示

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

評(píng)論

0/150

提交評(píng)論