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

2024-12-16 00:18:22
推荐回答(1个)
回答1:

/*给出的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<10;i++)
{
Ep[flag].id[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<10;i++)
{
Ep[flag].name[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<5;i++)
{
Ep[flag].sex[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<5;i++)
{
Ep[flag].age[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<10;i++)
{
Ep[flag].edu[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<5;i++)
{
Ep[flag].wage[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<20;i++)
{
Ep[flag].address[i]=*pchar;
if(*pchar++==',')
break;
}
for(int i=0;i<20;i++)
{
Ep[flag].number[i]=*pchar;
if(!*pchar++)
break;
}
//printf("%s",buf);
++flag;
}
fclose(pf);
system("pause");
return 0;
}