?? 結(jié)構(gòu)數(shù)據(jù)的文件讀寫(xiě).txt
字號(hào):
結(jié)構(gòu)是程序設(shè)計(jì)中最重要的數(shù)據(jù)類(lèi)型之一,利用結(jié)構(gòu)可以實(shí)現(xiàn)許多算法。
結(jié)構(gòu)同數(shù)組一樣是集合變量,它是程序設(shè)計(jì)中最重要的數(shù)據(jù)類(lèi)型之一,利用結(jié)構(gòu)可以方便許多問(wèn)題的處理。
結(jié)構(gòu)與數(shù)組的相同之處是由多個(gè)成員組成,各成員在內(nèi)存中順序存放,用一個(gè)名字引用多個(gè)成員數(shù)據(jù)。
結(jié)構(gòu)與數(shù)組的區(qū)別是數(shù)組元素的數(shù)據(jù)類(lèi)型相同,使用下標(biāo)訪(fǎng)問(wèn)各元素;而結(jié)構(gòu)的各元素?cái)?shù)據(jù)類(lèi)型可以不同,使用成員的名稱(chēng)訪(fǎng)問(wèn)結(jié)構(gòu)的各元素。
結(jié)構(gòu)數(shù)據(jù)的讀寫(xiě)是指從"流"文件中讀取數(shù)據(jù)存入結(jié)構(gòu),或?qū)⒔Y(jié)構(gòu)數(shù)據(jù)寫(xiě)入"流"文件。我們可以用以下兩種方法進(jìn)行結(jié)構(gòu)數(shù)據(jù)的文件讀寫(xiě)。
1.通過(guò)結(jié)構(gòu)成員進(jìn)行文件讀寫(xiě)
可以使用頭stdio.h中聲明的fscanf()和fprintf()函數(shù)對(duì)結(jié)構(gòu)數(shù)據(jù)進(jìn)行文件讀寫(xiě)。
例如,如下代碼從fp1指向的"流"文件中的讀取數(shù)據(jù)賦給結(jié)構(gòu)變量st.
struct student
{
int num;
char name[];
float grade;
} st;
fscanf(fp1,"%d %s %f \n",st.num,st.name.st.grage );
2.將結(jié)構(gòu)當(dāng)成數(shù)據(jù)塊進(jìn)行文件讀寫(xiě)
將結(jié)構(gòu)當(dāng)成數(shù)據(jù)塊進(jìn)行文件讀寫(xiě)可以使用頭文件stdio.h中聲明的fread()和fwrite()函數(shù)。
例如,如下代碼將st結(jié)構(gòu)數(shù)據(jù)一次全部寫(xiě)入fp1所指向的文件:
fwrite(&st,sizeof(student),1,fp1))==EOF)//fp1為"流"文件指針
例如,如下代碼從fp2指向的文件中讀取結(jié)構(gòu)數(shù)據(jù)
if((fread(&st,sifeof(student),1,fp2))==EOF);//fp2為"流"文件指針
3.對(duì)結(jié)構(gòu)數(shù)組也可以當(dāng)成數(shù)據(jù)塊讀寫(xiě)
例如,如下音樂(lè)會(huì) 結(jié)構(gòu)數(shù)組starr一次寫(xiě)入fp指向的文件中:
struct student starr[MAX];
fwrite(&st,sizeof(student),MAX,fp1);//fp為"流"文件指針/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -