C語言程序設計-13章 文件課件_第1頁
C語言程序設計-13章 文件課件_第2頁
C語言程序設計-13章 文件課件_第3頁
C語言程序設計-13章 文件課件_第4頁
C語言程序設計-13章 文件課件_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

§13.1C文件概述

文件(file),狹義的是指存儲在外部介質上的數(shù)據(jù)集合。這表現(xiàn)在:操作系統(tǒng)在從外部存儲介質上存/取數(shù)據(jù)時,都是以文件名作為標識進行的。比如磁盤文件、磁帶文件等。

實際上,操作系統(tǒng)對數(shù)據(jù)的管理都是以文件為單位的,包括:操作系統(tǒng)把數(shù)據(jù)的輸入/輸出終端設備也當作文件來處理,例如把鍵盤作為輸入文件,把顯示屏和打印機作為輸出文件。C語言把所有的外部設備都當作文件來處理,稱之為設備文件,從而把實際的物理設備抽象為邏輯文件的概念,把對所有外部設備的輸入輸出處理變成了對相應設備文件的讀寫過程。這樣,就把對設備文件和磁盤文件的處理方法統(tǒng)一起來了。第十三章文件C語言沒有專門的輸入輸出語句,它對文件的讀/寫都是通過調用庫函數(shù)中的輸入輸出函數(shù)來實現(xiàn)的,這些函數(shù)既能處理磁盤文件,也能控制外部設備。ANSIC對輸入輸出函數(shù)的標準進行了規(guī)定。C語言中的文件是流式文件,即文件是一個字節(jié)流或二進制流。這種文件把數(shù)據(jù)看作是一連串的字符(以字節(jié)為單位進行存?。皇且粋€個的記錄(record),這和Pascal之類的語言是不相同的。這種文件輸入輸出的數(shù)據(jù)流的開始和結束只受程序的控制而不受物理符號(如回車換行符)的控制。根據(jù)文件中數(shù)據(jù)的組織形式,C語言的文件可分為:文本文件(ASCII碼文件)和二進制文件。1.文本文件

文件中的每一個字節(jié)都代表著一個相應的字符,而且存放的就是相應字符的ASCII碼值。特點是:可以直接閱讀,也可以按字符逐個處理,但占用存儲空間較大,同時需要額外的轉換時間.即:把內存中的數(shù)據(jù)寫入文件時需按格式將二進制碼轉換成ASCII碼,把文件中的數(shù)據(jù)讀入內存時,也需將ASCII碼轉換成二進制碼.2.二進制文件二進制文件是將數(shù)據(jù)按其在內存中的實際存放形式直接存入文件中。

特點是:節(jié)省存儲空間和轉換時間,但不能直接閱讀。一般用于存放數(shù)據(jù)或中間結果,當需要時可以直接送入內存,以提高處理速度。例如:有一個整數(shù)10002,在內存中占2個字節(jié),如果按ASCII碼形式輸出到文件中,則要占5個字節(jié),分別是字符‘1’、‘0’、‘0’、‘0’、‘0’、‘2’的ASCII碼;而按二進制形式輸出到文件中時,則只占2個字節(jié),存放的內容是:0010011100010010。程序數(shù)據(jù)區(qū)輸出文件緩沖區(qū)輸入文件緩沖區(qū)磁盤文件2、非緩沖文件系統(tǒng):

系統(tǒng)并不自動地為正在使用的文件名開辟緩沖區(qū),而是由程序為每個文件設定緩沖區(qū)。ANSIC標準決定不采用非緩沖文件系統(tǒng),而只采用“緩沖文件系統(tǒng)”,它既可處理文本文件,也可處理二進制文件。不同的C語言版本對文件的處理方法是不同的:1、緩沖文件系統(tǒng):

系統(tǒng)自動在內存區(qū)為每一個正在使用的文件名開辟一個大小確定的緩沖區(qū)(一般為512字節(jié)),數(shù)據(jù)的輸入和輸出都要先經(jīng)過這個緩沖區(qū)。在緩沖文件系統(tǒng)中,關鍵是要掌握“文件指針”的概念。每一個被使用的文件都在內存中開辟了一個區(qū),用來存放文件的相關信息。這些信息保存在一個結構體變量中。該結構體是由系統(tǒng)定義的,取名為FILE。它的含義包含在“stdio.h”文件中:typedefstruct{shortlevel;/*緩沖區(qū)“滿”或“空”的程度*/unsignedflags;/*文件狀態(tài)標志*/char_fd;/*文件描述符*/unsignedcharhold;/*如無緩沖區(qū)不讀取字符*/shortbsize;/*緩沖區(qū)的大小*/unsignedchar*baffer;/*數(shù)據(jù)緩沖區(qū)的位置*/unsignedchar*_curp;/*文件位置指針*/unsignedistemp;/*臨時文件,指示器*/shorttoken;/*用于有效性檢查*/}FILE;

§13.2文件類型指針有了結構體FILE類型(文件結構體類型)以后,我們就可以用它來定義若干個FILE類型的變量,以便存放相應文件的若干信息。但是,對于FILE類型的變量,一般不需要用戶自己去定義和直接操作,而是由相應的文件操作函數(shù)來實現(xiàn)的。我們只需要做的是:定義FILE類型的指針變量,然后調用對文件進行相應操作的函數(shù)。FILE類型指針變量的定義:FILE*fp;其中,fp是一個指向FILE結構體類型的指針變量(簡稱“文件指針”)。通過fp就能實現(xiàn)對相應文件的操作。§13.3文件的打開與關閉

13.3.1文件的打開(fopen函數(shù))格式:FILE*fp;fp=fopen(文件名,使用方式);其中:

1、“文件名”可以是用雙引號括起來的文件名字;也可以是存放文件名字符串的首地址。2、“使用方式”:常見的有“r”,“w”,“rb”,“wb”,“r+”,“w+”等。(詳見表13.1P312).

打開文件文件的讀或寫關閉文件C語言對文件的操作過程:3、正常情況下,fopen函數(shù)的返回值是,所打開文件的FILE類型變量的地址(即指向相應文件的指針)。如:FILE*fp;fp=fopen(“f1.c”,“r”);被打開的文件名前面可以指明盤符和路徑。如:fp=fopen(“d:\\user\\stu.dat”,“r”);如果不能打開指定文件,則返回一個空指針值NULL。NULL在stdio.h文件中已定義為0。

補充理解:文件打開函數(shù)的功能調用文件的打開函數(shù),系統(tǒng)會在內存中為要打開的文件建立相應的FILE類型變量(保存有該文件的所有操作信息),然后將該變量的地址作為函數(shù)的返回值,我們將此返回值賦給一個FILE類型的指針變量。通過此指針變量,我們便可以對相應文件進行操作了。fp磁盤文件1磁盤文件2……為要打開的文件建立一個FILE類型的結構體變量*打開文件的常用格式:

FILE*fp;if((fp=fopen(“f1.c”,“r”))==NULL){printf(“Cannotopenthisfile\n”);

exit(0);}其中exit函數(shù)的作用是:不管當前在哪個函數(shù)調用過程中,一旦執(zhí)行exit函數(shù),便終止當前程序,返回到操作系統(tǒng)中.說明:1.關于文件的使用方式:(1)“r”方式:用于打開一個已存在的文本文件,只能從該文件中讀入數(shù)據(jù)。打開時,文件位置指針自動指向文件開頭。

“w”方式:該方式只能用于向文件中寫入數(shù)據(jù)。要打開的文本文件若已經(jīng)存在,則打開時先刪除該文件,然后重新建立一個新文件;若不存在,則新建一個這樣的空文件。

“a”(append)方式:該方式用于向文本文件末尾添加數(shù)據(jù).文件打開時,位置指針自動指向文件末尾.如文件不存在,則創(chuàng)建一個新文件.(2)“r+”,“w+”,“a+”方式:均為可讀/可寫方式,區(qū)別是:r+:被打開的文件應存在,否則無法打開文件。打開后位置指針指向文件的開頭,如原文件中有內容時,則寫入的內容會覆蓋原文件內容。

w+:要打開的文件若已存在,則其內容全部丟失,指針指向文件開頭;若不存在,則新建一個這樣的空文件,指針指向文件的開頭??傊?,用此方式打開的是一個空文件,“先寫后讀”。

a+:要打開的文件若已存在,則其內容保留,位置指針自動指向文件末尾;若不存在,則新建一個這樣的空文件,指針指向文件的末尾。總之,用此方式打開的文件,位置指針指向文件的末尾,可追加或讀取數(shù)據(jù),但要注意當前的文件指針位置。(3)另外還有:rb,wb,ab,rb+,wb+,ab+等方式,其含義同前述,只是用于二進制文件而已。

注意:不同的C系統(tǒng),在文件打開方式的表示上可能不相同,具體隨所用的系統(tǒng)而定.2.C語言中有三個標準文件指針由系統(tǒng)分配和控制,即由系統(tǒng)自動打開和關閉,用戶不能控制其開閉。

標準輸入文件:分配給鍵盤,文件指針:stdin

標準輸出文件:分配給顯示器,文件指針:stdout

標準錯誤輸出文件:分配給顯示器,文件指針:stderr程序開始運行時,系統(tǒng)自動打開三個標準設備文件。13.3.2文件的關閉(fclose函數(shù))格式:fclose(文件指針);如:fclose(fp);fclose函數(shù)也帶回一個返回值,正常關閉文件時返回值為0

,否則返回值為EOF(它在stdio.h中被定義為-1,含義為ErrorofFile),這可以用ferror

函數(shù)來測試(13.6.1節(jié)中講解)。注意:在對文件操作完畢后,要養(yǎng)成關閉文件的習慣,否則可能會造成數(shù)據(jù)的丟失。

fclose函數(shù)的作用是,若緩沖區(qū)中還有輸出數(shù)據(jù),則先將其輸出到磁盤文件,然后釋放該文件的FILE類型變量,同時文件指針變量(fp)也就和該文件“脫鉤”了。敘述如下:通過調用文件的打開函數(shù),系統(tǒng)會在內存中為要打開的文件建立相應的FILE類型變量,用戶從此函數(shù)的返回值可以得到該FILE類型變量的地址,由此用戶便可以對相應文件進行操作,處理完畢后又通過調用文件的關閉函數(shù)來釋放該FILE類型變量。即:打開文件讀寫文件關閉文件C語言對文件的操作過程:13.4.1fputc和fgetc函數(shù)(putc和getc函數(shù))1.fputc函數(shù)格式:fputc(ch,fp)

其中:ch是要輸出的字符(常量或變量);fp是文件指針變量,它是從fopen函數(shù)得到的返回值。作用:將一個字符(ch的值)輸出到指定文件中(fp所指向的文件,包括stdout和stderr)。如果成功,則返回值就是所輸出的字符;如失敗,則返回EOF(-1)符號常量。§13.4文件的讀寫2.fgetc函數(shù)

格式:

ch=fgetc(fp);作用:從指定的文件中讀入一個字符(對文本文件)或一個字節(jié)的數(shù)據(jù)(對二進制文件),該文件必須是以讀或讀寫方式打開的.

對于文本文件而言,正常請況下fgetc函數(shù)返回一個字符并賦給ch。如遇文件結束符,則返回一個文件結束標志EOF(也是-1,但含義為EndofFile)。因為ASCII碼為-1的字符不是可輸出字符,正常情況下的字符ASCII碼值不可能是-1,所以我們可以使用-1來作為文本文件的結束標志。

對于二進制文件而言,由于讀入的一個字節(jié)的二進制數(shù)據(jù)的值有可能是1,比如整型數(shù)據(jù)511(0000000111111111)的低字節(jié),所以此時就不能再用EOF作為文件的結束標志了;而要用feof函數(shù)來測試文件是否真正結束。使用格式:feof(fp)

如是文件結束,則函數(shù)的返回值為1,否則為0。這種判別方法對二進制文件和文本文件均適用。舉例:從磁盤文件(文本文件)f1.dat中順序讀入字符并在屏幕上顯示出來。

#include“stdio.h”main(){FILE*fp;charch;if((fp=fopen(“f1.dat”,“r”))==NULL){printf(“Can’topenfile\n”);exit(0);}while((ch=fgetc(fp))!=EOF)putchar(ch);/*等效于fputc(ch,stdout);*/fclose(fp);}以上while結構也可改為:

while(!feof(fp)){ch=fgetc(fp);putchar(ch);}3.fputc和fgetc函數(shù)使用舉例例13.1從鍵盤輸入一些字符,逐個把它們送到磁盤上去,直到輸入一個“#”為止。#include“stdio.h”main(){FILE*fp;charch,filename[10];scanf(“%s”,filename);if((fp=fopen(filename,“w”))==NULL){printf(“Cannotopenthisfile\n”);exit(0);}ch=getchar();while(ch!=‘#’){fputc(ch,fp);putchar(ch);ch=getchar();}fclose(fp);}運行情況:file1.ccomputerandc#

computerandc例13.2將一個磁盤文件中的信息復制到另一個磁盤文件中。#include“stdio.h”main(){FILE*in,*out;

charchinfile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=fopen(infile,“r”))==NULL){printf(“Cannotopenthisfile\n”);exit(0);}if((out=fopen(outfile,“w”))==NULL){printf(“Cannotopenthisfile\n”);exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}此程序也可用于二進制文件的處理,只需將文件的打開方式由“r”和“w”分別改為“rb”和“wb”即可。關于命令行帶參數(shù)的問題:源程序文件ccopy.c如下#include<stdio.h>main(intargc,char*argv[]){FILE*in,*out;

charch;if(agrc!=3){printf(“ParameterError!\n”);exit(0);}if((in=fopen(argv[1],“r”))==NULL){printf(“Cannotopenthisfile\n”);exit(0);}if((out=fopen(argv[2],“w”))==NULL){printf(“Cannotopenthisfile\n”);exit(0);}while(!feof(in))fputc(fgetc(in),out)

;fclose(in);fclose(out);}得到命令行參數(shù)的個數(shù)(包括所輸入的可執(zhí)行文件名)此指針數(shù)組中依次保存了命令行中每個參數(shù)(字符串)的首地址。將以上程序經(jīng)過編譯連接后生成一個可執(zhí)行文件ccopy.exe,于是我們便可在命令行輸入如下內容:

C:\>ccopyfile1.cfile2.c這樣,argc的值為3,argv數(shù)組中存放的內容為:●●●argv[0]argv[1]argv[2]ccopy\0file1.c\0file2.c\0(演示程序P317.c)最后說明兩點:1、在stdio.h中把fputc和fgetc定義為宏名putc和getc,以使書寫方便。一般情況下,我們可以把它們作用相同的函數(shù)來使用。2、我們在前面曾講過的putchar和getchar函數(shù)實質上就是由fputc和fgetc兩個函數(shù)派生而來的,在stdio.h頭文件中我們可以找到如下的宏定義:

#definegetchar()getc(stdin)#defineputchar(c)putc((c),stdout)13.4.2fread和fwrite函數(shù)

格式:

fread(buffer,size,count,fp)fwrite(buffer,size,count,fp)其中,buffer

是一個指針,對fread而言,它是讀入數(shù)據(jù)要存放的起始地址;對fwrite而言,它是要輸出數(shù)據(jù)的起始地址。

size是讀/寫一次的字節(jié)數(shù)(數(shù)據(jù)塊的大小)。

count是要讀/寫的次數(shù)(數(shù)據(jù)塊的數(shù)量)。

fp文件指針,指向被操作文件(通常是二進制文件)。fread和fwrite函數(shù)在正常調用時,其返回值為count的值。作用:用于讀寫若干個數(shù)據(jù)塊(多個字節(jié))。

例如:floatf[100];……fread(f,4,2,fp);……表示從fp所指向的二進制文件中讀入2個實型數(shù)據(jù)(一個實型數(shù)據(jù)為4字節(jié))到數(shù)組f中。對于保存結構體類型數(shù)據(jù)的文件,采用塊讀寫函數(shù)就更方便了。如:structstudent_type{charname[10];intnum;intage;charaddr[30];}stud[40];……for(i=0;i<40;i++)fread(&stud[i],sizeof(structstudent_type),1,fp1);或:for(i=0;i<40;i++)fwrite(&stud[i],sizeof(structstudent_type),1,fp2);請問:對于以上語句,如果不使用for循環(huán)而只用一條語句,如何實現(xiàn)?sizeof稱為“長度運算符”,它返回變量或數(shù)據(jù)類型的字節(jié)數(shù),是一個單目運算符。這里返回的是44(個字節(jié))。fread(stud,sizeof(structstudent_type),

40,fp1);例13.3從鍵盤輸入4個學生的有關數(shù)據(jù),然后把它們轉存到磁盤文件上去.(設文件名為stu_list)#include“stdio.h”#defineSIZE4structstudent_type{charname[10];intnum;intage;charaddr[15];}stud[SIZE];voidsave(){FILE*fp;inti;if((fp=fopen(“stu_list”,“wb”))==NULL){printf(“Cannotopenthisfile\n”);return;}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(structstudent_type),1,fp)!=1){printf(“filewriteerror\n”);break;}}29個字節(jié)main(){inti;for(i=0;i<SIZE;i++)scanf(“%s%d%d%s”,stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);

save();}運行時,若輸入以下4個學生的姓名,學號,年齡和地址:zhang100119room_101fun100220room_102tan100321room_103ling100419room_104則以上信息將被寫入到磁盤文件stu_list中。對于以上的stu_list文件,我們又可用以下程序將其顯示出來。#include“stdio.h”#defineSIZE4structstudent_type{charname[10];intnum;intage;charaddr[15];}stud[SIZE];main(){inti;FILE*fp;fp=fopen(“stu_list”,“rb”);for(i=0;i<SIZE;i++)if(fread(&stud[i],sizeof(structstudent_type),1,fp)==1){printf(“%10s%4d%4d%15s\n”,stud[i].name,stud[i].num,stud[i].age,stud[i].addr);}elseif(feof(fp))return;elseprintf(“filereaderror\n”);}此程序的運行結果就是前面所輸入的內容。說明:1.在輸入輸出數(shù)據(jù)過程中的轉換問題:從鍵盤的輸入緩沖區(qū)到用戶的數(shù)據(jù)區(qū),如果是字符型數(shù)據(jù),不存在轉換問題,因為程序對字符的處理就是按其ASCII碼來處理的;如果是數(shù)值型數(shù)據(jù),則要進行相應的二進制轉換(如下圖)。鍵盤鍵盤輸入緩沖區(qū)(ASCII碼)用戶程序數(shù)據(jù)區(qū)(二進制)二進制文件ASCII碼文件wbw2.fread和fwrite函數(shù)一般用于二進制文件的輸入和輸出。因為它們是按數(shù)據(jù)塊的長度來處理輸入輸出的,如果用于處理ASCII碼文件,就可能出現(xiàn)數(shù)據(jù)長度和數(shù)據(jù)格式不匹配的問題。從而產(chǎn)生數(shù)據(jù)混亂!顯示終端若在磁盤文件“stu_dat”中已有4位學生的數(shù)據(jù),要求從該文件中讀入數(shù)據(jù)并存放到“stu_list”文件中。則完整的程序為:

#include“stdio.h”#defineSIZE4structstudent_type{charname[10];intnum;intage;charaddr[15];}stud[SIZE];

voidload(){inti;FILE*fp;if((fp=fopen(“stu_dat”,“rb”))==NULL){printf(“Cannotopeninfile\n”);return;}for(i=0;i<SIZE;i++)if(fread(&stud[i],sizeof(structstudent_type),1,fp)!=1){if(feof(fp))return;printf(“filereaderror\n”);}fclose(fp);}voidsave(){FILE*fp;inti;if((fp=fopen(“stu_list”,“wb”))==NULL){printf(“Cannotopenthisfile\n”);return;}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(structstudent_type),1,fp)!=1){printf(“filewriteerror\n”);break;}fclose(fp);}main(){load();save();}13.4.3fprintf和fscanf函數(shù)

與我們前面所講的printf和scanf函數(shù)的作用相似,都是格式化讀寫函數(shù)。只是后者以終端(鍵盤,顯示器)為讀/寫對象。而前者是以磁盤文件為讀/寫對象。調用格式:fprintf(fp,格式字符串,輸出表列);

fscanf(fp,格式字符串,輸入表列);如:inti=3;floatt=4.5;……fprintf(fp,“%d,%6.2f”,i,t);

則是將字符串

3,4.50

寫到fp所指向的磁盤文件中。相應的也有:fscanf(fp,“%d,%f”,&i,&t);

作用:fprintf和fscanf函數(shù)用于對ASCII碼磁盤文件進行讀寫,輸入時要將ASCII碼轉換為二進制形式,輸出時又要將二進制形式轉換為ASCII碼形式。因此,這兩個函數(shù)對磁盤的操作比較費時,不利于內存與磁盤間進行頻繁的數(shù)據(jù)交換。13.4.4其它讀寫函數(shù)1.putw和getw函數(shù)

作用:從指定的磁盤文件中讀/寫一個字(整數(shù))。如:i=getw(fp);putw(10,fp);/*其中10為一個整型常量*/2.fgets和fputs函數(shù)作用:從指定的ASCII碼磁盤文件中讀/寫一個字符串。如:charstr[100];fgets(str,n,fp);即從fp指向的文件中讀入n1個字符,并放入數(shù)組str中,然后在最后加上一個‘\0’字符,共得到n個字符;若在讀完(n1)個字符之前遇到了換行符或EOF,則讀入立即結束。函數(shù)返回值為str的首地址。相應的也有:fputs(“China”,fp);或:fputs(str,fp);即:輸出一個字符串到指定的磁盤文件中,不輸出結束標志‘\0’。若輸出成功,函數(shù)返回值為0;若失敗返回值為EOF。在FILE結構體類型中,有一個位置指針(curp),指向當前讀寫文件的位置。通常,在讀寫一個文件時,文件位置指針是自動變化的,即讀寫完一個字符后,自動移向下一個字符的位置,這種方式稱為“順序讀寫”。但是,有時我們又希望打破這種規(guī)律,將位置指針按需要隨機地指向任意位置,然后進行讀寫,這種方式稱為“隨機讀寫”。對于流式文件,這兩種讀寫方式都是可行的。但要實現(xiàn)隨機讀寫,往往需要調用相關的函數(shù)。§13.5文件的定位13.5.1rewind函數(shù)格式:

rewind(fp);作用:使文件位置指針重新返回到文件的開頭。此函數(shù)無返回值。

例13.4(P323)打開一個磁盤文件,先將它的內容顯示在屏幕上,然后再把它復制到另一個文件中。

#include“stdio.h”main(){FILE*fp1,*fp2;fp1=fopen(“file1.c”,“r”);fp2=fopen(“file2.c”,“w”);while(!feof(fp1))

putchar(getc(fp1));

rewind(fp1); while(!feof(fp1))

putc(getc(fp1),fp2); fclose(fp1); fclose(fp2);}-1磁盤文件file1.ccurpcurp13.5.2fseek函數(shù)

格式:fseek(文件類型指針,位移量,起始點)

作用:根據(jù)“起始點”+“位移量”,決定當前位置指針的位置。

說明:1、參數(shù)“起始點”可以是0、1或2,含義為:(表13.2)起始點宏名數(shù)字文件開始SEEK_SET0文件當前位置SEEK_CUR1文件末尾SEEK_END22、參數(shù)“位移量”:是指以起始點為基準點,向前移動的字節(jié)數(shù)。要求用長整型數(shù)據(jù),以使文件大于64k時不會出問題。如:fseek(fp,100L,0);fseek(fp,50L,1);fseek(fp,10L,2);3、fseek函數(shù)一般用于二進制文件,對于文本文件,由于存在字符轉換的問題,位置計算往往會出現(xiàn)混亂。#include“stdio.h”structstudent_type{charname[10];intnum;intage;charsex;/*共占15個字節(jié)*/}stud[10];main(){inti;FILE*fp;if((fp=fopen(“stud.dat”,“rb”))==NULL){printf(“Cannotopeninfile\n”);exit(0);}例13.5在磁盤文件stud.dat上存有10個學生的數(shù)據(jù),要求讀入第1,3,5,7,9個學生的數(shù)據(jù),然后在屏幕上顯示出來。for(i=0;i<10;i+=2){fseek(fp,i*sizeof(structstudent_type)

溫馨提示

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

評論

0/150

提交評論