C语言如何将文件的数据赋值给结构体的变量

王林
发布: 2024-01-12 15:27:18
转载
1364人浏览过

C语言如何将文件的数据赋值给结构体的变量

/*给出的sex[2]好像装不下4个字母。。。。。。不过题意明白了。

**为了简化编程,我把结构体里的数据都改成字符数组了,如果需要数字的话,再加一步转换**就好了,比较简单就不写了,另外程序中用了个结构体数组,如果不能确定文件中到底有多**少行,为了节约内存,可以用动态分配的方式。编写得比较仓促,也没封装函数,不过确实**可用,将就着看吧~~~

*/

#include <...>

struct employ

立即学习C语言免费学习笔记(深入)”;

{

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("文件打开失败! ");

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文件当中读取内容,进行简单操作。

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 193
查看详情 Find JSON Path Online

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... ");

num = rand() % PEOPLE_NUM + 1;

for(i = 0; i

{

fgets(prize_name, 32, fp);

}

printf("%s get the prize!!! ", 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(" ");

get_prize(fp, prize_name);

}

fclose(fp);

return 0;

}文件是这个样子:

C语言如何将文件的数据赋值给结构体的变量

运行截图:

C语言如何将文件的数据赋值给结构体的变量

写这种程序你存名字的文件一定要排整齐,这样程序才好处理。祝好运。

以上就是C语言如何将文件的数据赋值给结构体的变量的详细内容,更多请关注php中文网其它相关文章!

C语言速学教程(入门到精通)
C语言速学教程(入门到精通)

C语言怎么学习?C语言怎么入门?C语言在哪学?C语言怎么学才快?不用担心,这里为大家提供了C语言速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:Excel办公网网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号