c部落格06 結構體 檔案

2022-05-04 07:18:09 字數 2162 閱讀 8287

struct 結構名

;

struct是定義結構型別的關鍵字,在struct之後,自行命名乙個結構名,它必須是乙個合法的c識別符號,struct與結構名兩者合起來共同組成結構型別名,如struct student

結構體的定義形式還有混合定義:

struct 結構名

結構變數名1,結構變數名2;

還有無型別名定義:

struct

;

前者與單獨定義形式的實質是一樣的,而後者定義結構變數時省略了結構名,所以也導致了變數不能再增加,否則重新定義結構體,不推薦使用。

有關typedef定義結構體:

typedef struct 結構名

struct;

用typedef定義,則上面的struct==struct+結構名,這樣子之後定義結構體變數的時候,就可以用struct來簡化**了。因此推薦使用typedef。

成員的賦值:

在c語言中,用結構成員操作符『.』來引用成員;格式為:結構變數名.結構成員嗎,比如stu.num或stu.name

引用成語後,對成員的賦值方法與同型別的變數完全相同,比如:

stu.num=119;

strcpy(stu.name,"hello");

結構體陣列的排序,其實就是陣列的排序,可以用常見的選擇法與冒泡法排序

(比如將students[n]中按照students中的num排序)

1、冒泡法(把最大的沉下去):

使用兩層迴圈

for(i=1;istudents[j+1].num) 交換students[j]與students[j+1];

}//內迴圈結束後,將有乙個最大值「沉」到未排序的最下面

}

兩層迴圈後即可得到有序的重構陣列students[n];

2、選擇法(先選擇最大的,然後按照順序排下來):

這裡也是要用到兩層迴圈

for(i=1;i兩層迴圈後即可得到有序的重構陣列students[n];

用結構體指標訪問結構成員:

1、用p訪問:

如:(p)->num=110;

其中p表示的是p指向的結構變數,注意,(p)中的括號是必不可少的,因為『』運算子的優先順序低於『.』運算子,若沒有括號,則p.num等價於*(p.num),含義發生變化,會產生錯誤。

2、用指向運算子->訪問:

如:p->num=110;

上面兩種公式得到的效果是一樣的。但我們通常用指向運算子->;

union data;

union data a, b, c;

定義列舉變數:enum typename a, b, c;

當然也可以在定義列舉型別的同時定義變數,就像結構體的混合定義。

有了列舉變數,就可以把列表中的值賦給它了:

比如:

enum week;

enum week a = mon, b = wed, c = sat;

file *fp;

int i=0;

if((fp=fopen("abc.txt","r+"))==null)

//讀進結構體陣列:

while(!feof(fp))

檔案讀取函式完整形式:fopen(char *filename,char *type);

這裡char *type為開啟檔案的操作形式

其中字元型檔案:

"r" 唯讀;

"w" 清空檔案內容,只寫;

"a" 追加;

"r+" 以讀/寫方式開啟乙個已存在的檔案;

"w+" 以讀/寫方式建立乙個新的文字檔案 ;

"a+" 以讀/寫方式開啟乙個檔案進行追加 ;

二進位制檔案:

"rb" 唯讀;

"wb" 清空檔案內容,只寫;

"ab" 追加 ;

"rb+" 以讀/寫方式開啟乙個二進位制檔案;

"wb+" 以讀/寫方式建立乙個新的二進位制檔案 ;

"ab+" 以讀/寫方式開啟乙個二進位制檔案進行追加 ;

c部落格06 結構體 檔案

結構的定義 定義乙個結構的一般形式為 struct 結構名 成員表由若干個成員組成,每個成員都是該結構的乙個組成部分。對每個成員也必須作型別說明。例如 struct stu 說明結構變數有以下三種方法。以上面定義的stu為例來加以說明。1.先定義結構,再說明結構變數。如 struct stu str...

c部落格06 結構體 檔案

struct 結構體名 賦值可不在這寫 因為結構體定義頻繁,需要乙個簡短的新變數名 typedef struct 結構體名 新變數名 struct student students n 或者利用typedef stu 然後用stu students n 對成員的引用方法students n 成員名 ...

C語言部落格作業06 結構體 檔案

學習了結構體和檔案,其實還是很實用的,通過對檔案的學習,可以用 對檔案進行修改,就像開啟了新世界的大門。從難度上看,結構體那一部分比較簡單,記住一些基本語法,大體上都能掌握。個人覺得,檔案那一部分裡,重點是要學習如何去使用那些檔案函式,函式內容也比較多,需要較多練習才能更好的鞏固。從目前個人掌握得情...