結(jié)構(gòu)類型定義的一般形式為:
?????? struct結(jié)構(gòu)名
????? {
?????? 類型名 結(jié)構(gòu)成員名1;
?????? 類型名 結(jié)構(gòu)成員名2;
?????? · · ·
?????? 類型名 結(jié)構(gòu)成員名n;
????? };
關(guān)鍵字struct和它后面的結(jié)構(gòu)名一起組成一個新的數(shù)據(jù)類型名
?結(jié)構(gòu)適合用于描述具有多個屬性的實體或?qū)ο?/p>
在C語言中,使用結(jié)構(gòu)成員操作符“.”來引用結(jié)構(gòu)成員,格式為:
?結(jié)構(gòu)變量名 . 結(jié)構(gòu)成員名
具有相同類型的結(jié)構(gòu)變量可以直接賦值
struct student{????????????????? /* 學(xué)生信息結(jié)構(gòu)定義 */
???int num;?????????????????????? /*學(xué)號 */
???char name[10];???????????????? /*姓名 */
???int computer, english, math;?? /*三門課程成績 */
???double average;??????????????? /*個人平均成績 */
};
指針可以指向任何一種變量,而結(jié)構(gòu)變量也是C語言中的一種合法變量,因此,指針也可以指向結(jié)構(gòu)變量,這就是結(jié)構(gòu)指針。
結(jié)構(gòu)指針就是指向結(jié)構(gòu)類型變量的指針
結(jié)構(gòu)指針的使用:
(1) 用*p訪問結(jié)構(gòu)成員。
(2) 用指向運算符“->”訪問指針指向的結(jié)構(gòu)成員。
文件:操作系統(tǒng)中的文件是指駐留在外部介質(zhì)(如磁盤等)中的一個有序數(shù)據(jù)集。
ASCII碼 (文本文件 textstream)字符流
?二進制碼(二進制文件 binarystream)二進制流,二進制文件是直接把內(nèi)存數(shù)據(jù)以二進制形式保存
文件類型指針:FILE* fp? ? 指向文件緩沖區(qū),通過移動指針實現(xiàn)對文件的操作
打開文件和關(guān)閉文件:fopen("文件名","文件打開方式")
使文件指針與相應(yīng)文件實體對應(yīng)起來
程序?qū)ξ募羔樳M行操作,即fp代表磁盤文件
函數(shù)fopen()的返回值
執(zhí)行成功,則返回包含文件緩沖區(qū)等信息的FILE型地址,賦給文件指針fp
不成功,則返回一個NULL(空值)
exit(0):關(guān)閉所有打開的文件,并終止程序的執(zhí)行
參數(shù)0表示程序正常結(jié)束;非0參數(shù)通常表示不正常的程序結(jié)束

if讀文件
??? 指定的文件必須存在,否則出錯;
if寫文件(指定的文件可以存在,也可以不存在)
??? if? 以"w"方式寫
??????? if該文件已經(jīng)存在,原文件將被刪去重新建立;
??????? else????按指定的名字新建一個文件;
??? else if? 以"a"方式寫
??????? if該文件已經(jīng)存在, 寫入的數(shù)據(jù)將被添加到指定文件原有數(shù)據(jù)的后面,不會刪去原來的內(nèi)容;
??????? else? ?按指定的名字新建一個文件(與“w”相同);
if? 文件同時讀和寫
??????? 使用"r+"、"w+"或 "a+" 打開文件
關(guān)閉文件:if( fclose(fp) ){
??? printf(Can not close the file!\n" );
? exit(0);
}
返回0:正常關(guān)閉文件
返回非0:無法正常關(guān)閉文件
字符讀寫函數(shù): fgetc() / fputc()
字符串讀寫函數(shù):fputs() /fgets()
格式化讀寫函數(shù):fscanf()/ fprintf()
fscanf(文件指針,格式字符串,輸入表);
fprintf(文件指針,格式字符串,輸出表);
二進制讀寫函數(shù):fread()/ fwrite()
fread(buffer,size, count, fp);
從二進制文件中讀入一個數(shù)據(jù)塊到變量
fwrite(buffer,size, count, fp);
向二進制文件中寫入一個數(shù)據(jù)塊?
buffer:指針,表示存放數(shù)據(jù)的首地址;
size:數(shù)據(jù)塊的字節(jié)數(shù)
count:要讀寫的數(shù)據(jù)塊塊數(shù)
¨fp:文件指針
其他相關(guān)函數(shù):
檢測文件結(jié)尾函數(shù)feof()
檢測文件讀寫出錯函數(shù)ferror()
清除末尾標志和出錯標志函數(shù)clearerr()
文件定位的函數(shù)fseek() 、rewind() 、ftell()
函數(shù)feof()
feof(fp);
判斷fp指針是否已經(jīng)到文件末尾,
函數(shù)返回值
1:到文件結(jié)束位置
0:文件未結(jié)束
函數(shù)rewind()
rewind(FILE *fp);
定位文件指針,使文件指針指向讀寫文件的首地址,即打開文件時文件指針所指向的位置