C語言程序設(shè)計(jì) 第3版 課件 丁紅 第9-11章 指針、結(jié)構(gòu)體和共用體、文件_第1頁
C語言程序設(shè)計(jì) 第3版 課件 丁紅 第9-11章 指針、結(jié)構(gòu)體和共用體、文件_第2頁
C語言程序設(shè)計(jì) 第3版 課件 丁紅 第9-11章 指針、結(jié)構(gòu)體和共用體、文件_第3頁
C語言程序設(shè)計(jì) 第3版 課件 丁紅 第9-11章 指針、結(jié)構(gòu)體和共用體、文件_第4頁
C語言程序設(shè)計(jì) 第3版 課件 丁紅 第9-11章 指針、結(jié)構(gòu)體和共用體、文件_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第九章指針下一頁長度為8個(gè)比特的存儲(chǔ)空間1、存儲(chǔ)單元2、地址每個(gè)存儲(chǔ)單元的地址編號(hào)

注意:變量名、變量值、變量地址的區(qū)別。例:inta=3;3、指針就是地址4、變量的指針就是變量的地址5、指針變量用來存放其他變量地址(指針)的變量返回9.1變量的定義和使用實(shí)例:

定義一個(gè)指針變量,該指針變量用來存放整型變量a的地址。向變量a中輸入數(shù)據(jù)并將數(shù)據(jù)輸出來。跳轉(zhuǎn)問題1:如何定義一個(gè)指針變量?問題2:如何將整型變量a的地址賦給指針變量p呢?問題3:如何向指針變量p所指向的變量a中輸入和輸出數(shù)據(jù)呢?一、指針變量的定義指針變量定義的一般形式:基類型*指針變量名int*p;p例如:float*p;char*p;上一頁二、指針變量的初始化int*p;pinta;aint*p=&a;或p=&a;&ap和a的關(guān)系:

指針變量p指向變量a;注意:

賦值時(shí),只能將地址值賦給指針變量;而且指針變量和它所指向的變量的類型應(yīng)該一致.上一頁三、指針變量的使用方法1:直接使用變量a的方法scanf(“%d”,&a);方法2:

間接使用指針變量p的方法scanf(“%d”,p);輸入方法1:

直接使用變量a的方法printf(“%d”,a);方法2:

間接使用指針變量p的方法printf(“%d”,*p);輸出返回上一頁main(){inta;int*p;p=&a;scanf(“%d”,p);printf(“%d”,*p);int*p=&a;或int*p;*p=a;scanf(“%d”,&a);或scanf(“%d”,a);或注意:1、&是地址運(yùn)算符,取變量的地址;*是指針運(yùn)算符,取地址單元中的值。

2、如果指針變量p指向普通變量a,則*p等價(jià)于a;p等價(jià)于&a;實(shí)訓(xùn)1下面程序的結(jié)果是什么?main(){inta,b;int*p,*q;p=&a;q=&b;*p=3;*&b=4;printf("%d,%d,%d,%d",a,b,*p,*q);}結(jié)論:

&和*運(yùn)算符的優(yōu)先級(jí)相同,結(jié)合方向?yàn)樽杂叶?。?shí)訓(xùn)2如果從鍵盤輸入34和54,下面這個(gè)程序的輸出結(jié)果是什么?main(){int*p1,*p2,*p;inta,b;p1=&a;p2=&b;scanf("%d%d",p1,p2);if(a<b){p=p1;p1=p2;p2=p;}printf("a=%d,b=%d\n",a,b);printf("*p1=%d,*p2=%d\n",*p1,*p2);}關(guān)于指針的幾個(gè)思考1、*p1+1和p1+1的區(qū)別是什么?2、*p1-*p2和p1-p2的區(qū)別是什么?int*p1,*p2;3、p1>p2和*p1>*p2的區(qū)別是什么?四、指針變量作為函數(shù)參數(shù)從一個(gè)例子開始:判斷下面程序的結(jié)果是什么?swap(int*p,int*q)/*交換功能函數(shù)swap*/{ints;s=*p;*p=*q;*q=s;}main()/*主函數(shù)main*/{int*p1,*p2;inta,b;p1=&a;p2=&b;scanf("%d%d",p1,p2);if(a<b)swap(p1,p2);/*調(diào)用函數(shù)swap*/printf("%d,%d\n",a,b);printf("%d,%d\n",*p1,*p2);}結(jié)論:

當(dāng)實(shí)參和形參是指針變量時(shí),在函數(shù)的調(diào)用中,實(shí)參傳遞給形參的是地址,在子函數(shù)中,使形參所指向的變量的值發(fā)生了變化,函數(shù)調(diào)用結(jié)束后,這些變化了的變量值依然保留了下來,從而在main中使用的就是這些已經(jīng)改變了的變量值。swap(int*p,int*q){int*s;s=p;p=q;q=s;}

main(){int*p1,*p2;inta,b;p1=&a;p2=&b;scanf("%d%d",p1,p2);if(a<b)swap(p1,p2);printf("%d,%d\n",a,b);printf("%d,%d\n",*p1,*p2);}p1p2ab&a&b當(dāng)輸入98和109時(shí),輸出結(jié)果為什么?98109pq&a&bs&a&b&a復(fù)習(xí)9.2指針和一維數(shù)組例:int*p;inta;p=&a;paintnum[8];int*p;num[0]num[1]num[2]num[3]num[4]num[5]num[6]num[7]p如何使指針p指向數(shù)組num呢?一、指向數(shù)組元素的指針intnum[8];int*p;pnum[0]num[1]num[2]num[3]num[4]num[5]num[6]num[7]1、使指針指向數(shù)組元素num[0]p=&num[0];2、使指針指向數(shù)組元素num[1]p=&num[1];3、使指針指向數(shù)組元素num[i]p=&num[i];p=num;二、通過指針引用數(shù)組元素pnum[0]num[1]num[2]num[3]num[4]num[5]num[6]num[7]已知p=num;1、p+1表示使指針指向num[1],則*(p+1)表示數(shù)組元素num[1]的值2、p+i表示使指針指向num[i],則*(p+i)表示數(shù)組元素num[i]的值3、p+i等價(jià)于num+i、&num[i]、&p[i];4、*(p+i)等價(jià)于*(num+i)、num[i]、p[i];p三、數(shù)組和指針使用實(shí)訓(xùn)實(shí)訓(xùn)1下面這個(gè)程序的功能是使用指針來實(shí)現(xiàn)數(shù)組的輸入和輸出。請?jiān)诔绦虻目瞻滋幪钊牒线m的內(nèi)容。main(){ints[10],*p,i;

for(i=0;i<10;i++)scanf("%d",p++);for(i=0;i<10;i++)printf("%5d",*p++);}p=s;p=s;main(){ints[10],*p;for(p=s;p<s+10;p++)scanf("%d",p);for(p=s;p<s+10;p++)printf("%5d",*p);}另一種寫法:

下面這個(gè)程序的功能是實(shí)現(xiàn)將一維數(shù)組s[12]升序排列,在在程序空白處填入合適內(nèi)容.實(shí)訓(xùn)2main(){ints[12],num,i,j;int*p;

for(i=0;i<12;i++)scanf("%d",p+i);for(i=0;i<12;i++)for(j=i+1;j<12;j++)if(*(p+j)>*(p+i))

for(;;p++)printf("%5d",*p);}{num=*(p+j);*(p+j)=*(p+i);*(p+i)=num;}p=a;p=a;p<=&s[11];main(){ints[12],num;int*p1,*p2;for(p1=s;p1<s+12;p1++)scanf("%d",p1);for(p1=s;p1<s+12;p1++)for(p2=p1+1;p2<s+12;p2++)if(*p2<*p1){num=*p1;*p1=*p2;*p2=num;}for(p1=s;p1<s+12;p1++)printf("%5d",*p1);}另一種編寫方法小結(jié)如果ints[10],*p;

p=s;1、p和s都表示數(shù)組元素的首地址。2、指向數(shù)組的指針p可以移動(dòng),如p++表示使p下移指向下一個(gè)元素。而s不可以移動(dòng)。3、因?yàn)橹羔榩可以移動(dòng),所以要隨時(shí)注意p的位置,如果需要使p重新指向第一個(gè)元素,則p=s4、*p++:等價(jià)于*(p++)表示先得到p指向的變量的值,然后使指針p加1指向下一個(gè)元素5、*(++p):先使指針p下移,指向下一個(gè)元素,然后取其所指向的變量的值9.3指針和二維數(shù)組示例:有一個(gè)二維數(shù)組s[3][4];S[3][4]={{12,14,11,1},{43,12,23,45},{34,43,32,12}};1214111s[0]43122345s[1]34433212s[2]1、s[0]表示第0行首地址

s[1]表示第1行首地址

s[2]表示第2行首地址2、第i行首地址可以表示為s[i],或*(s+i)或&s[i][0];3、二維數(shù)組名s表示二維數(shù)組第一行首地址。1214111s[0]43122345s[1]34433212s[2]4、第i行第j列元素的地址可以表示為:s[i]+j;*(s+i)+j;&s[i][j];5、第i行第j列元素的值可以表示為:*(s[i]+j);*(*(s+i)+j);*&s[i][j];那么如何使指針指向二維數(shù)組元素呢?一、指向二維數(shù)組元素的指針變量示例:有一個(gè)二維數(shù)組s[3][4];S[3][4]={{12,14,11,1},{43,12,23,45},{34,43,32,12}};1214111s[0]43122345s[1]34433212s[2]int*p;p=s;p1、P++表示使指針移向一下一個(gè)數(shù)組元素。p2、*p表示p所指向的數(shù)組元素中的值。3、第i行第j列元素的值可以表示為*(p+i*4+j)實(shí)訓(xùn)1使用指針實(shí)現(xiàn)向二維數(shù)組中輸入輸出內(nèi)容main(){intarray[4][5];int*p;for(p=array[0];p<;p++)scanf("%d",

);for(p=array[0];p<;p++)printf("%d",);}方法1:方法2:main(

){intarray[4][5];inti,*p;p=array[0];for(i=0;i<20;i++,p++)scanf("%d",p);for(i=0;i<20;i++,p++)scanf("%d",*p);}二、指向二維數(shù)組元素的行指針變量行指針變量:用來指向某一行元素,即一個(gè)一維數(shù)組的指針變量.12141114312234534433212int(*p)[4];pp=s;s1、行指針變量只能指向某一行,而不能具體指向某一個(gè)元素。2、p+i表示第i行元素的首地址。3、*(p+i)+j等價(jià)于*(s+i)+j,表示第i行第j列元素的地址.實(shí)訓(xùn)3以下程序可分別求出方陣a中兩個(gè)對角線上元素之和,請?jiān)诳瞻滋幪钊牒线m的語句來完善程序。main(){inta[6][6],i,j,k,p1,p2;for(i=0;i<6;i++)for(j=0;j<6;j++)scanf("%d",*(a+i)+j);k=6;p1=0;p2=0;for(i=0;i<6;i++){p1=

+(*(*(a+i)+i));p2=

+(*(*(a+i)+k));}printf("p1=%4d,p2=%4d\n",p1,p2);}9.4指針和字符串例:charname[]=“SangDongLin”存儲(chǔ)方式:SangDongLin\0name1、數(shù)組名name表示數(shù)組的起始地址2、name+i表示第i個(gè)元素地址3、*(name+i)表示第i個(gè)元素的值。4、name++不成立一、字符串的地址二、指向字符串的指針變量字符指針變量的定義:char*p;使字符指針變量指向字符數(shù)組:p=name;指向關(guān)系:SangDongLin\0pname定義和賦值的另一種形式:Char*p=“SangDongLin”實(shí)例:觀察下面程序的功能。main(){char*p="Asyoungman,weshouldhavegreatidea!";intn;n=0;for(;*p!='\0';p++)if(*p<='z'&&*p>='a')n++;printf("%d",n);}9.5幾種特殊類型的指針變量一、指針數(shù)組一維指針數(shù)組的定義形式為:類型*數(shù)組名[數(shù)組長度];

例:int*pointer[8];實(shí)訓(xùn):觀察下面程序的作用是什么?當(dāng)輸入ding,wang,zhou,huang,chen,zou時(shí),輸出是什么?main(){char*name[6],*temp;inti,j;printf("\nPleaseinputthenames:\n");for(i=0;i<6;i++)scanf("%s",name[i]);for(i=0;i<6;i++)for(j=i+1;j<6;j++)if(strcmp(name[i],name[j])>0){temp=name[i];name[i]=name[j];name[j]=temp;}for(i=0;i<6;i++)printf("%s\n",name[i]);}二、指向函數(shù)的指針指向函數(shù)的指針變量定義的一般形式為:

數(shù)據(jù)類型(*指針變量名)();例:long(*p)();表示指針p指向返回長整型數(shù)值的函數(shù)longf(intn){longs;if(n==0||n==1)s=1;elses=f(n-1)*n;return(s);}main(){intn;long(*p)();p=f;longy;printf(“pleaseinputanumber:\n”);scanf(“%d”,&n);y=p(n);printf(“%d!=%ld\n”,n,y);}當(dāng)輸入4時(shí),該程序的輸出結(jié)果是什么?三、指向指針的指針指向指針的指針變量定義的一般形式為:

數(shù)據(jù)類型**指針變量名;例:下面程序的輸出結(jié)果是什么?main(){inta,*p,**q;a=1024;p=&a;q=&p;printf("%d,%d,%d",a,*p,**q);}第十章結(jié)構(gòu)體和共用體結(jié)構(gòu)體類型共用體類型枚舉類型定義一個(gè)通訊地址表結(jié)構(gòu)體:一、結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型定義的一般形式:struct

結(jié)構(gòu)體名成員名1;成員名2;成員名3;成員名n;……類型名1類型名2類型名3類型名n;structaddresscharname[20];chardepartment[30];

charaddress[30];longbox;longphone;charemail[30];;通訊地址表結(jié)構(gòu):Namedepartmentaddressboxphoneemail

定義一個(gè)成績表結(jié)構(gòu)體,該結(jié)構(gòu)中包含班級(jí)、學(xué)號(hào)、姓名、語文成績、數(shù)學(xué)成績、英語成績。

總結(jié):

根據(jù)實(shí)際的需要,每個(gè)結(jié)構(gòu)體類型所包含的成員類型和名字也不一樣,在使用中,可以根據(jù)自己的需要進(jìn)行結(jié)構(gòu)體類型的定義。structscore{chargrade[20];longnumber;

charname[20];

floatchinese;floatmath;

floatenglish;};思考:定義好結(jié)構(gòu)體類型后,它是否占用內(nèi)存空間?類型和變量兩個(gè)概念的區(qū)別所在gradenumbernamechinesemathenglish成績表結(jié)構(gòu):二、結(jié)構(gòu)體類型變量的定義

(1)先定義結(jié)構(gòu)體類型再定義結(jié)構(gòu)體變量structstudent{longintnum;charname[20];intage;charsex;floatscore;};structstudentstudent1,student2;structstudent{longintnum;charname[20];intage;charsex;floatscore;}student1,student2;(2)在定義類型的同時(shí)定義變量三、結(jié)構(gòu)體類型變量的初始化

(1)可以在定義的同時(shí)進(jìn)行初始化structstudentstudent1339901yangxiao19m98.5student1(2)在定義完后進(jìn)行初始化

structstudentstudent1;={339901,”yangxiao”,20,’m’,89};student1={339901,”yangxiao”,20,’m’,89};注意:賦值時(shí)要注意成員項(xiàng)的類型。

(3)可以將一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體賦給另外一個(gè)具有相同類型的結(jié)構(gòu)體變量。

structstudentstudent1,student2;student1={3399011,”zhangsong”,20,’m’,89};student2=student1;關(guān)于結(jié)構(gòu)體的幾點(diǎn)問題

(1)結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的區(qū)別類型只是一種模型,并不占內(nèi)存空間。這種模型只是說明該種結(jié)構(gòu)的數(shù)據(jù)在內(nèi)存中占多大的存儲(chǔ)空間,可以存放什么樣的數(shù)據(jù)。而變量在定義為某種類型之后,系統(tǒng)根據(jù)該種類型結(jié)構(gòu)為該變量分配一定的存儲(chǔ)空間。(2)結(jié)構(gòu)體類型中所包含的各成員項(xiàng)和普通變量的區(qū)別沒有區(qū)別,地位和作用相同。只是一個(gè)是單獨(dú)存在,一個(gè)是結(jié)構(gòu)體中的一個(gè)成員。結(jié)構(gòu)體變量就象普通變量一樣可以參加各種運(yùn)算。(3)在C語言中,結(jié)構(gòu)類型是固定的,這種說法對嗎?

不對。和整型、實(shí)型、字符型不同的是,結(jié)構(gòu)體類型是用戶根據(jù)自己的需要設(shè)計(jì)定義的。系統(tǒng)中沒有預(yù)先定義好的固定的結(jié)構(gòu)體類型,用戶如果需要使用結(jié)構(gòu)體類型的數(shù)據(jù),都必須先在程序中先定義好相應(yīng)的結(jié)構(gòu)體類型。如成績表結(jié)構(gòu)、通訊表結(jié)構(gòu)都是用戶根據(jù)自己的需要定義的。思考:觀察下面程序,看其運(yùn)行結(jié)果是什么?四、結(jié)構(gòu)體變量的引用structstudent{longnum;charname[20];floatmath;floatchinese;floatenglish;};main(){structstudentstudent1;scanf(“%ld%s”,&student1.num,);printf("%ld\t%s\t",student1.num,);}五、結(jié)構(gòu)體數(shù)組的定義和使用structgoods{longnum;charname[20];floatprice;intnumber;floatsumprice;}good[5];

例:good[0]good[1]good[2]good[3]good[4]numnamepricenumbersumprice1、定義2、初始化good[5]={{1101,“shoes”,89,2},{1102,“bag”,53.5,8},{1103,“pen”,11,10},{1104,“knife”,1,12},{1105,“Eraser”,1.5,6}};3、輸入scanf(“%ld”,&goods[0].num);scanf(“%s”,goods[0].name);scanf(“%f”,&goods[0].price);scanf(“%d”,&goods[0].number);good[0].sumprice=good[0].price*good[0].number;iiiiiiifor(i=0;i<5;i++){

}4、輸出printf(“%ld\t”,goods[0].num);printf(“%s\t”,goods[0].name);printf(“%f\t”,goods[0].price);printf(“%d\t”,goods[0].number);iiiifor(i=0;i<5;i++){}

printf(“%f\n”,goods[0].sumprice);ifor(i=0;i<5;i++)printf("%ld\t%s\t%.1f\t%d\t%.1f\n",good[i].num,good[i].name,good[i].price,good[i].number,good[i].sumprice);}六、指向結(jié)構(gòu)體變量的指針structgoods{longnum;charname[20];floatprice;intnumber;floatsumprice;}good;思考:定義何種類型的指針,才能指向結(jié)構(gòu)體變量good?1、指向結(jié)構(gòu)體類型變量指針的定義和使用structgoods*p;p=&good;numnamepricenumbersumpricegoodp2、指向結(jié)構(gòu)體類型變量指針引用(*p).num(*p).name(*p).pricep->nump->namep->price七、指向結(jié)構(gòu)體數(shù)組的指針structgoods{longnum;charname[20];floatprice;intnumber;floatsumprice;}good[5];

structgoods*p;思考:如何使指針p指向結(jié)構(gòu)體數(shù)組good,如果指針p指向了結(jié)構(gòu)體數(shù)組good,則p++表示的意思是什么?又如何通過p來引用數(shù)組里的元素?1、使指針指向結(jié)構(gòu)體數(shù)組p=good;good[0]good[1]good[2]good[3]good[4]numnamepricenumbersumpricep(1)、p++表示使指針下移(2)、p->num表示引用p所指向的數(shù)組元素中的成員項(xiàng)num2、關(guān)于結(jié)構(gòu)體數(shù)組的兩點(diǎn)注意事項(xiàng)1)、結(jié)構(gòu)體類型的指針只能指向結(jié)構(gòu)體變量,而不能指向結(jié)構(gòu)體變量中的某個(gè)成員項(xiàng),但是可以通過指向結(jié)構(gòu)體變量的指針來引用成員項(xiàng)。2)、在指向結(jié)構(gòu)體數(shù)組的指針中,(++p)->num表示先使指針p下移指向下一個(gè)數(shù)組元素,然后得到其所指向的數(shù)組元素的成員項(xiàng)num;而(p++)->num表示先得到p現(xiàn)在所指向的數(shù)組元素中的成員項(xiàng)num,然后使指針p下移。本節(jié)內(nèi)容小結(jié)1、結(jié)構(gòu)體類型的概念2、結(jié)構(gòu)體類型的定義3、結(jié)構(gòu)體變量的定義及其和結(jié)構(gòu)體類型的區(qū)別所在4、結(jié)構(gòu)體變量的初始化5、結(jié)構(gòu)體變量的引用

結(jié)構(gòu)體變量名.成員名10.2共用體

現(xiàn)在有三個(gè)變量,int型變量i,float型變量j,char型變量t,整型變量a。在任何時(shí)刻,只需要使用這4個(gè)變量中的某一個(gè)。思考題傳統(tǒng)的定義:inti;floatj;chart;inta;是否可以有更實(shí)用更省空間的做法呢?一、共用體類型的定義unions{inti;floatj;chart;intx;};使用共用體定義的方法Union共用體名{類型1成員1;類型2成員2;

……};共用體定義的一般形式:二、共用體變量的定義unionsx;表示將變量x定義為共用體s類型三、共用體變量成員的引用unions{inti;floatj;

chart;intg;}x;如x.j或者x.t四、共用體使用實(shí)例unions{inti;floatj;chart;intg;};main(){unionsx;clrscr();x.i=8;x.j=2.5;x.t='c';x.g=5;printf("%d",x.i);}該程序的結(jié)果是什么?10.3枚舉類型定義:將對象可能存在的值一一列舉出來。例1:enumweek{sunday,monday,tuesday,wednesday,thursday,friday,

saturday,}week2;枚舉類型變量中的值,自動(dòng)從0開始,依次遞增。例2:enumweek{sunday,monday,tuesday=2,wednesday,thursday,friday,

saturday,}week2;當(dāng)枚舉中的某個(gè)成員賦值后,其后的成員按依次加1的規(guī)則確定其值。10.4用戶自定義類型例:Typedefchar*STR;表示用STRING代表了char*這種數(shù)據(jù)類型。char*p;STRp;typestructstudent{charname[20];intnumber;floatscore1;floatscore2;floatscore3;}STU;例:表示用STU表示結(jié)構(gòu)體數(shù)據(jù)類型structstudent;structstudentstudent1;STUstudent1;typedefintINTEGER;typedefcharCHARACTER;例:練習(xí)1:1、當(dāng)說明一個(gè)結(jié)構(gòu)體變量時(shí),系統(tǒng)分配給它的內(nèi)存是()A、各成員所需內(nèi)存量的總和B、結(jié)構(gòu)中第一個(gè)成員所需內(nèi)存量C、成員中占內(nèi)存量最大者所需的容量D、結(jié)構(gòu)中最后一個(gè)成員所需內(nèi)存量練習(xí)2:若有以下說明語句:structstudent{intage;intnum;}std,*p;p=&std;則以下對結(jié)構(gòu)體變量std中成員age的引用不正確的是()A、std.ageB、p->ageC、(*p).ageD、*p.age練習(xí)3:若有以下說明語句,則下面表達(dá)式中值為1002的是()structstudent{intage;intnum;};structstudentstu[3]={{20,1001},{19,1002},{21,1003}};structstudent*p;p=stu;A、(++p)->numB、(p++)->ageC、(*p).numD、(*++p).ageC語言共用體變量在程序運(yùn)行期間()A、所有成員一直駐留在內(nèi)存中B、只有一個(gè)成員駐留在內(nèi)存中C、部分成員駐留在內(nèi)存中D、沒有成員駐留在內(nèi)存中練習(xí)4:以下程序的運(yùn)行結(jié)果是:

unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}練習(xí)5:以下程序用以輸出結(jié)構(gòu)體變量bt所占內(nèi)存單元的字節(jié)數(shù),請?jiān)诔绦蚩瞻滋幪钊牒线m內(nèi)容。

structps{doublei;chararr[20];};main(){structpsbt;printf("btsize:%d\n",

);}練習(xí)6:第十一章文件

理解C語言中文件的概念掌握新建文件、打開文件的函數(shù)使用掌握文件輸入輸出函數(shù)的使用學(xué)習(xí)目標(biāo)11.1、文件的打開和關(guān)閉1、文件:存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。File12、文件類型指針:指向某一個(gè)文件定義形式:FILE*fp;fp文件的打開和關(guān)閉說明:對文件進(jìn)行讀寫之前應(yīng)該“打開”該文件,在使用結(jié)束之后應(yīng)關(guān)閉該文件。1、文件的打開(fopen函數(shù))

Fopen函數(shù)的調(diào)用方式:

FILE*fp;

fp=fopen(文件名,使用文

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論