69,373
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
#define MAX_EMPLOYEE 100
typedef struct person
{
char m_strName[20]; //人员姓名
int m_nAge; //人员年龄
char m_nSex; //人员性别
} Person;
Person Register( char *name , int age , char sex )
{
Person x;
strcpy( x.m_strName , name );
x.m_nAge = age;
x.m_nSex = ( ( sex == 'm' ) ? 'm' : 'f' );
return x;
}
void ShowPerson( Person x )
{
printf( "\n%s %d %c\n" , x.m_strName , x.m_nAge , x.m_nSex );
}
int WriteRecord( FILE *file , Person *emp )
{
//return fwrite( emp , sizeof( Person ) , 1 , file );
char row[ sizeof( Person ) ];
sprintf( row , "%s %d %c\n" , emp->m_strName , emp->m_nAge , emp->m_nSex );
return fputs( row , file );
}
int ReadRecord( FILE *file , Person *emp )
{
//return fread( emp , sizeof( Person ) , 1 , file );
char row[ sizeof( Person ) ];
fgets( row , sizeof( Person ) , file );
strcpy( emp->m_strName , strtok( row , " " ) );
emp->m_nAge = atoi( strtok( NULL , " " ) );
emp->m_nSex = strtok( NULL , " " )[0];
return 0;
}
void main()
{
Person personlist[MAX_EMPLOYEE] , x;
int count = 0;
int i;
FILE *emp_file;
personlist[ count ] = Register( "zhang3" , 32 , 'm' );
ShowPerson( personlist[ count ] );
count++;
personlist[ count ] = Register( "li4" , 35 , 'm' );
ShowPerson( personlist[ count ] );
count++;
emp_file=fopen( "employee.txt" , "wt" );
if( !emp_file )
{
printf( "Error open file!\n" );
return ;
}
for( i = 0 ; i < count ; i++ )
{
WriteRecord( emp_file , &personlist[i] );
}
fclose( emp_file );
emp_file = fopen( "employee.txt" , "rt" );
if( !emp_file )
{
printf( "Error open file!\n" );
return ;
}
ReadRecord( emp_file , &x );
ShowPerson( x );
fclose( emp_file );
}