C语言如何将文件的数据赋值给结构体的变量
structemploy{charid[10];charname[10];charsex[2];intage;charedu[10];intwage;charaddres...
struct employ
{
char id[10];
char name[10];
char sex[2];
int age;
char edu[10];
int wage;
char address[20];
long int number;
};
这个是我的结构体
a001,dasd,asda,12,sda,56,asda,12
这个是我的文件里的数据中的一行,不知道多少行,但是要读完每一行并赋值给结构体里的变量 展开
{
char id[10];
char name[10];
char sex[2];
int age;
char edu[10];
int wage;
char address[20];
long int number;
};
这个是我的结构体
a001,dasd,asda,12,sda,56,asda,12
这个是我的文件里的数据中的一行,不知道多少行,但是要读完每一行并赋值给结构体里的变量 展开
2个回答
展开全部
/*给出的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;
}
展开全部
请参考fscanf http://baike.baidu.com/view/656694.htm
可以使用fscanf(stream,"%s,%s,%s。。。",&id,&name。。。)
可以使用fscanf(stream,"%s,%s,%s。。。",&id,&name。。。)
追问
试过的,直接执行出来弹windows警告窗,你能不能给个具体的例子参考下
追答
#include<stdio.h>
int main()
{
char name[10];
int age;
char id[10];
char sex[2];
FILE* stream = fopen("test.txt","r+");
if( stream == NULL )
printf( "The file was not exists\n" );
else
{
fscanf(stream, "%[^,],%d,%[^,],%[^,]", name,&age,id,sex);
printf("%s %d %s %s\n",name,age,id,sex);
}
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询