c语言将文本文件读取到结构体中
在c语言中怎么将一个文本文件,如“a.txt”读取到结构体中,文本文件中一行的各个数据要用什么符号来分隔(空格?逗号?分号?还是回车?)?请说得详细点,我是初学者,最好举...
在c语言中怎么将一个文本文件,如“a.txt”读取到结构体中,文本文件中一行的各个数据要用什么符号来分隔(空格?逗号?分号?还是回车?)?请说得详细点,我是初学者,最好举一个例子!
如果回答好了,我会追加20分,不然我宁愿关闭问题!
看不是很懂
我就是需要fread的
文件中的信息是直接输入的,不是通过程序输入的
不过,本诚信的原则,还是给你分吧
希望你在得到分后再帮我把问题解决完满
谢谢了! 展开
如果回答好了,我会追加20分,不然我宁愿关闭问题!
看不是很懂
我就是需要fread的
文件中的信息是直接输入的,不是通过程序输入的
不过,本诚信的原则,还是给你分吧
希望你在得到分后再帮我把问题解决完满
谢谢了! 展开
展开全部
呵呵,满意的话要给我追加分哦!那两个例子都是我自己给你写的。
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<N&&!feof(fp);i++)
{
fscanf(fp,"Name:%s\t\tScore:%d\n",d[i].s,&d[i].a);
no++;
}
fclose(fp);
for(i=0;i<no&&d[i].s[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就行。
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<N&&!feof(fp);i++)
{
fscanf(fp,"Name:%s\t\tScore:%d\n",d[i].s,&d[i].a);
no++;
}
fclose(fp);
for(i=0;i<no&&d[i].s[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就行。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询