c語言文件讀取並寫入結構體,C語言讀取文件賦給結構體

本文目錄一覽:

C語言怎樣將.txt文件中的數據寫入到結構體中去

txt文件中的數據寫入到結構體中去的源代碼如下:

#includestdio.h

#include string.h

//可以退出的頭文件

#include stdlib.h

//結構體的長度

#define DATALEN 15

//函數聲明

//定義結構數組

struct wordUnit{

int id; //id

char word[10]; //詞語

char depId[10]; //依存詞語的id

char pos[10]; //詞性

char depRel[10]; //依存目標的關係

};

int main(){

FILE *data;//要讀取的文件指針

int i=0;//結構題數組移動

struct wordUnit words[DATALEN];

if((data=fopen(“data3.txt”,”r”))==NULL){

printf(“Can not open file\n”);

return 0;

}

while(!feof(data)){

//原txt文檔的數據之間是以空格隔開的

}

fclose(data);

for(int j=0;ji;j++){

}

return 0;

}

擴展資料

1、使用關鍵字struct,它表示接下來是一個結構體。

2、後面是一個可選的標誌(book),它是用來引用該結構體的快速標記。

C語言中怎麼樣把文件裡面的數據讀入到結構體中?

文本文件可以一個一個的讀在分別賦值給結構,如果是二進位數據可以讀取一個結構整體,

struct

data

{

int

x;

doub

y;

}

d;

find.xd.y;

fread((char*)(d),

sizeof(data),

1,

fin);

c語言怎麼把一個結構體存入文件,在把文件讀取怎

C語言,要將結構體中的數據存到磁碟上需要使用與文件操作相關的庫函數。

首先要使用文件打開函數fopen()。

fopen函數用來打開一個文件,其調用的一般形式為: 文件指針名=fopen(文件名,使用文件方式) 其中,「文件指針名」必須是被說明為FILE 類型的指針變數,「文件名」是被打開文件的文件名。 「使用文件方式」是指文件的類型和操作要求。「文件名」是字元串常量或字元串數組。

其次,使用文件讀寫函數讀取文件。

在C語言中提供了多種文件讀寫的函數:

·字元讀寫函數 :fgetc和fputc

·字元串讀寫函數:fgets和fputs

·數據塊讀寫函數:freed和fwrite

·格式化讀寫函數:fscanf和fprinf

最後,在文件讀取結束要使用文件關閉函數fclose()關閉文件。

下面使用格式化讀寫函數fscanf和fprintf實現對文件A.txt(各項信息以空格分割)的讀取,並存入結構體數組a中,並將它的信息以新的格式(用製表符分割各項信息)寫入B.txt,實現對A.txt的處理。

C語言源程序如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#include stdio.h

#include stdlib.h

#include assert.h

typedef struct student{

char name[32];

int no;

char sex[16];

float score;

} stu;

int main(int argc, char* argv[])

{

//打開文件

FILE * r=fopen(“A.txt”,”r”);

assert(r!=NULL);

FILE * w=fopen(“B.txt”,”w”);

assert(w!=NULL);

//讀寫文件

stu a[128];

int i=0;

while(fscanf(r,”%s%d%s%f”,a[i].name,a[i].no,a[i].sex,a[i].score)!=EOF)

{

printf(“%s\t%d\t%s\t%g\n”,a[i].name,a[i].no,a[i].sex,a[i].score);//輸出到顯示器屏幕

fprintf(w,”%s\t%d\t%s\t%g\n”,a[i].name,a[i].no,a[i].sex,a[i].score);//輸出到文件B.txt

i++;

}

//關閉文件

fclose(r);

fclose(w);

system(“pause”);

return 0;

}

c語言,怎麼從文件讀取數據到結構體,求助

C 結構體

實現讀取文件並保存到結構體代碼:

#include<stdio.h>

#include<stdlib.h>

//文件操作格式化讀取保存到結構體數組

#defineBUFSIZE1000

structdata

charG[4];

floatXs;//起點坐標

floatYs;

floatE;

};

intmain()

FILE*fp;

inti,j,r_n=0;

charbuf[BUFSIZE],c;

//打開文件

fp=fopen("E:\\line.txt","r");

if(fp==NULL)

printf("Cannotopenfile!\n");

return1;

//計算文件中數據的行數

while(!feof(fp))

{c=fgetc(fp);

if(c=='\n')

r_n++;

printf("r_n=%d\n",r_n);

rewind(fp);//將指針重置到第一行

structdata*line1=NULL;

line1=(structdata*)malloc(sizeof(structdata)*(r_n+1));//創建一個結構體含有(r_n+1)個數據

for(i=1;i<=r_n;i++)

fgets(buf,BUFSIZE,fp);//一次讀取一行

sscanf(buf,"%sX%fY%fE%f",&line1[i].G,&line1[i].Xs,&line1[i].Ys,&line1[i].E);//分別跳過XYE讀取數據

//關閉文件

fclose(fp);

for(i=1;i<=r_n-1;i++)

printf("\n%s%.3f%.3f%.3f",line1[i].G,line1[i].Xs,line1[i].Ys,&line1[i].E);

free(line1);//釋放

return0;

運行效果:

擴展資料:

函數sscanf(),它是C語言中從一個字元串中讀進與指定格式相符的數據的函數。

函數原型:

intsscanf(stringstr,stringfmt,mixedvar1,mixedvar2...);

intscanf(constchar*format[,argument]...);

sscanf與scanf類似,都是用於輸入的,只是後者以屏幕(stdin)為輸入源,前者以固定字元串為輸入源。

其中的format可以是一個或多個{%[*][width][{h|l|I64|L}]type|''|'\t'|'\n'|非%符號}

註:

1、*亦可用于格式中,(即%*d和%*s)加了星號(*)表示跳過此數據不讀入.(也就是不把此數據讀入參數中)

2、{a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒有d。

3、width表示讀取寬度。

4、{h|l|I64|L}:參數的size,通常h表示單位元組size,I表示2位元組size,L表示4位元組size(double例外),l64表示8位元組size。

5、type:這就很多了,就是%s,%d之類。

6、特別的:%*[width][{h|l|I64|L}]type表示滿足該條件的被過濾掉,不會向目標參數中寫入值

支持集合操作:

%[a-z]表示匹配a到z中任意字元,貪婪性(儘可能多的匹配)

%[aB']匹配a、B、'中一員,貪婪性

%[^a]匹配非a的任意字元,貪婪性

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245805.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:11
下一篇 2024-12-12 13:11

相關推薦

發表回復

登錄後才能評論