读书人

C语言 从资料中奖信息去读到链表中

发布时间: 2012-11-03 10:57:44 作者: rapoo

C语言 从文件中奖信息去读到链表中
我定义了一个结构体链表
typedef struct Account
{
char name[10];
char codeNumber[10];
int acc;
double balance;
int state;
struct Account *next;

}Account;
将链表信息写入文件
void writeData()
{
Account *p;
p = begin;
FILE *fout = NULL;
fout = fopen( "Account.txt","w");
if( !fout )
{
cout << "Error opening the fiel :" << fileName << endl;
return ;
}
while(p!=NULL)
{
fprintf(fout, "%s\t%s\t%d\t%lf\t%d\n", p->name, p->codeNumber,p->acc,p->balance,p->state);
p = p->next;
}
fclose( fout );
}
之后从文件中读取数据
void readData()
{
Account *p;
FILE *fin = NULL;
fin = fopen( "Account.txt","r" );
if( !fin )
{
cout << "Error opening the fiel :" << fileName << endl;
return ;
}
while(!feof(fin))
{
p = (Account *)malloc(sizeof(Account));
fscanf(fin, "%s%s%d%lf%d", p->name, p->codeNumber,&(p->acc),&(p->balance),&(p->state));
p->next = NULL;
cout << p->name << " " << p->codeNumber << " " << p->acc <<" " << p->balance << " " << p->state << endl;
if(begin == NULL)
{
begin = p;
}
else
{
end->next = p;
}
end = p;
}
getch();
fclose( fin );
}
读取之后发现链表中多了数据,这是为什么?

[解决办法]
多了什么数据?
[解决办法]
fscanf(fin, "%s%s%d%lf%d", p->name, p->codeNumber,&(p->acc),&(p->balance),&(p->state));
也该和fprintf指定的格式匹配
fprintf(fout, "%s\t%s\t%d\t%lf\t%d\n", p->name, p->codeNumber,p->acc,p->balance,p->state);

读书人网 >C语言

热点推荐