首頁  >  文章  >  電腦教學  >  C語言如何將檔案的資料賦值給結構體的變量

C語言如何將檔案的資料賦值給結構體的變量

王林
王林轉載
2024-01-12 15:27:18963瀏覽

C語言如何將檔案的資料賦值給結構體的變數

/*給的sex[2]好像裝不下4個字母。 。 。 。 。 。不過題意明白了。

**為了簡化編程,我把結構體裡的資料都改成字元數組了,如果需要數字的話,再加一步轉換**就好了,比較簡單就不寫了,另外程序中用了個結構體數組,如果無法確定檔案中到底有多**少行,為了節約內存,可以用動態分配的方式。寫得比較倉促,也沒封裝函數,不過確實**可用,將會就著看吧~~~

*/

#include <...>

struct employ

{

char id[10];

char name[10];

char sex[5];

char age[5];

char edu[10];

char wage[5];

char address[20];

char number[20];

};

int _tmain(int argc, _TCHAR* argv[])

{

char buf[100];

FILE* pf=NULL;

struct employ Ep[10]={};

int flag=0;

pf=fopen("employ.dat","r");

if(!pf)

{

printf("檔案開啟失敗!\n");

system("pause");

return -1;

}

while(fgets(buf,99,pf))

{

char* pchar=buf;

for(int i=0;i

{

Ep[flag].id[i]=*pchar;

if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].name[i]=*pchar;

if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].sex[i]=*pchar;

#if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].age[i]=*pchar;

if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].edu[i]=*pchar;

if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].wage[i]=*pchar;

#if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].address[i]=*pchar;

if(*pchar ==',')

break;

}

for(int i=0;i

{

Ep[flag].number[i]=*pchar;

#if(!*pchar )

break;

}

//printf("%s",buf);

flag;

}

fclose(pf);

system("pause");

return 0;

}

c語言中如何使用txt檔案中的資料變數

使用fopen,fscanf函數可以實現從txt檔案當中讀取內容,進行簡單操作。

1.fopen的函數原型:FILE * fopen(const char * path,const char * mode);

fopen函數的第一個參數是檔案路徑,第二個參數是開啟方式,有以下幾種方式:

r 以唯讀方式開啟文件,該文件必須存在。

r 以可讀寫方式開啟文件,該文件必須存在。

rb 讀寫開啟一個二進位文件,允許讀取資料。

rw 讀寫開啟一個文字文件,允許讀和寫。

w 開啟只寫文件,若文件存在則文件長度清除為0,即該文件內容會消失。若文件不存在則建立該文件。

w 開啟可讀寫文件,若文件存在則文件長度清除為零,即該文件內容會消失。若文件不存在則建立該文件。

a 以附加的方式開啟只寫檔案。若文件不存在,則會建立該文件,如果文件存在,寫入的資料會被加到文件尾,即文件原先的內容會被保留。 (EOF符保留)

a 以附加方式開啟可讀寫的檔案。若文件不存在,則會建立該文件,如果文件存在,寫入的資料會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)

wb 只寫開啟或新建一個二進位;只允許寫入資料。

wb 讀寫開啟或建立一個二進位文件,允許讀取和寫入。

wt 讀寫開啟或著建立一個文字檔;允許讀寫。

at 讀寫開啟一個文字文件,允許讀取或在文字末端追加資料。

ab 讀寫開啟一個二進位文件,允許讀取或在文件末端追加資料。

上述的形態字串都可以再加一個b字符,如rb、w b或ab 等組合,加入b 字符用來告訴函數庫打開的文件為二進位文件,而非純文字文件。

傳回值:檔案順利開啟後,指向該流的檔案指標就會被傳回。如果檔案開啟失敗則回傳NULL,並且把錯誤代碼存在errno中。

2.例程:

1

2

3

4

5

6

7

8

9

10

11

12

#include

#define F_PATH "d:\\myfile\\file.dat"

#charc;

intmain(){

FILE*fp=NULL;//需要注意

fp=fopen(F_PATH,"r");

if(NULL==fp) return-1;//要回傳錯誤代碼

while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //從文字中讀入並在控制台列印出來

fclose(fp);

fp=NULL;//需要指向空,否則會指向原始開啟檔案位址

return0;

}

C語音如何讀取txt檔案中的某一行並賦值給變數

最簡單的方法,就是一行一行的讀,但只取你要的那一行資料就行了。下面是我寫的一個簡單的例子,抽了三次獎,沒有判重複的。

#include

#include

#include

#define PEOPLE_NUM 10 //我的檔案裡有10個名字

void get_prize(FILE* fp, char prize_name[])

{

int num;

int i;

fseek(fp, 0, SEEK_SET);

printf("start...\n");

num = rand() % PEOPLE_NUM 1;

for(i = 0; i

{

fgets(prize_name, 32, fp);

}

printf("%s get the prize!!!\n", prize_name);

}

int main()

{

FILE* fp = fopen("name.txt", "r");

int prize_num;

int i;

char prize_name[32] = {0};

srand(time(0));

for(i = 0; i

{

printf("\n");

get_prize(fp, prize_name);

}

fclose(fp);

return 0;

}檔案是這個樣子:

C語言如何將檔案的資料賦值給結構體的變量

#運行截圖:

C語言如何將檔案的資料賦值給結構體的變量

#寫這種程式你存名字的檔案一定要排整齊,這樣程式才好處理。祝好運。

以上是C語言如何將檔案的資料賦值給結構體的變量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:docexcel.net。如有侵權,請聯絡admin@php.cn刪除