c语言将文本文件读取到结构体中

2024-11-06 18:30:35
推荐回答(1个)
回答1:

呵呵,满意的话要给我追加分哦!那两个例子都是我自己给你写的。
1.
#include"stdio.h"
#include"stdlib.h"
main()
{
FILE *fp;
char s[100];
if((fp=fopen("f:\\score.txt","a"))==NULL)
{
printf("Can't open destination file!\n");
exit(0);
}
printf("Please input your name:");
gets(s);
fprintf(fp,"Name:%s\t\tScore:%d\n",s,rand()%100);
fclose(fp);
printf("Your score is saved!\n");
}

2.
#include"stdio.h"
#define N 20
struct score
{
char s[20];
int a;
}d[N];
main()
{
FILE *fp;
int i,no=0;
if((fp=fopen("f:\\score.txt","r"))==NULL)
{
printf("Can't open destination file!\n");
exit(0);
}
for(i=0;i {
fscanf(fp,"Name:%s\t\tScore:%d\n",d[i].s,&d[i].a);
no++;
}
fclose(fp);
for(i=0;i printf("Name:%s\t\tScore:%d\n",d[i].s,d[i].a);
}

在文件中分隔用什么随便你,但是当你用什么分隔后,在用fscanf函数的时候也要在格式控制中加入,如我氏掘哪用第一个程序保存了些数据在f:\\score.txt中:
Name:ytyh Score:1
Name:tytuy Score:41
Name:hjhj Score:41
由于我散手在第一个程序中用的是fprintf(fp,"Name:%s\t\tScore:%d\n",s,rand()%100);故在第二个程序歼码中就心须用fscanf(fp,"Name:%s\t\tScore:%d\n",d[i].s,&d[i].a);
在ASCII文件中我只知道这样,但在二进制文件中就没有这么麻烦,直接用fread就行。