怎样把TXT格式文件中以记录存在的数据读到C语言结构体数组中

我想把文本文件中的记录读到结构体的数组中,记录部分如下:
分类号 书名 作者 出版社
F224.32/7492 博弈学习理论 陈学彬 上海财经大学出版社 1
F224.32/0027 博弈论基础 高峰 中国社会科学出版社 1
F224.3/8023 经济博弈分析 全贤唐 机械工业出版社
请高手指点,谢谢!!!

第1个回答  推荐于2016-04-22
#include <stdio.h>
#include <stdlib.h>
struct content
{
char id[100];
char bookname[100];
char editorname[100];
char publishname[100];
struct content *next;
};
int main()
{
FILE *fp;///读文件用的文件指针
char root[1000];///记录文件所在的目录
scanf("%s",root);///输入文件所在的目录
fp=fopen(root,"r");///打开文件
if (fp==NULL)///如果文件指针为空,报错
{
printf("无法打开文件!\n");
return 0;
}
struct content *p1,*p2=NULL;
p1=(struct content*)calloc(1,sizeof(struct content));
p2=p1;
while (fscanf(fp,"%s",p1->id)==-1)
{
fscanf(fp,"%s",p1->bookname);
fscanf(fp,"%s",p1->editorname);
fscanf(fp,"%s",p1->publishname);
p2->next=p1;
p2=p1;
p2->next=NULL;
p1=(struct content*)calloc(1,sizeof(struct content));
}
return 0;
}

这是代码,没测试过,不知道对吧,高手不敢当,希望对你有用本回答被提问者和网友采纳
第2个回答  推荐于2016-09-20
首先你得知道文件记录的格式是什么样的。
比如说,文件中存的是学生的成绩。
学号 语文 数学
1001 80 90
1002 85 59
……
1、定义结构体信息
struct student
{
char no[10];
float chinese;
float math;
};
2、定义一个结构体数组,用来存所有学生的信息
struct student s[100];
3、读取每一行信息
fscanf("%s %f %f",s[i].no,&s[i].chinese,&s[i].math);

c语言入门代码009 从 txt 文本文件中加载数据到结构体数组
第一步,通过fopen函数以读取模式打开文件,准备从文件头部获取数据。第二步,文件中逐个读取结构体字段,并将数据保存到数组中,直到文件结尾。feof函数用于检测文件是否达到末尾,判断是否需要结束循环。在读取数据时,使用fscanf函数,与scanf相似,但添加了文件指针参数,用于在文件内容中执行读取操作。数据...

如何使用C语言从TXT文件中读取如下格式的数据并存储与数组中?
1.fopen函数打开需要读取的文本,获取该文件的文件描述符 2.使用fscan()函数对文件进行读取。3.放到二维数组其实就是读取相应格式的数据,然后对应二维数组的每个位置 例如 include "stdio.h"#define M 300#define N 50void main(){ int i,j; float a[M][N]={0}; FILE *fp; if((fp=fop...

C语言,怎么把TXT文件里的数据赋值到数组里面
1 以文本方式打开文件。2 循环用fscanf格式化输入数据到数组。3 判断fscanf的返回值,如果显示到达文件结尾,退出输入。4 关闭文件。5 使用数据。二、代码实现。设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔。代码可以写作:include <stdio.h>int main(){int v[100];\/\/开一个足够大...

如何用C语言读取txt文件中的数据到程序的数组中?
FILE *fin;int a[50][2];int i;fin = fopen("abc.txt","r"); \/\/ 打开文件,按读的方式打开 for (i=0;i<50;i++)fscanf(fin,"%d %d", &a[i][0], &a[i][1]); \/\/ 循环读 fclose(fin); \/\/关闭文件 for (i=0;i<50;i++) printf("%d %d\\n",a[i][0],a[i...

c语言,怎么从文件读取数据到结构体,求助
//文件操作格式化读取保存到结构体数组 #defineBUFSIZE1000 structdata { charG[4];floatXs;//起点坐标 floatYs;floatE;};intmain(){ FILE*fp;inti,j,r_n=0;charbuf[BUFSIZE],c;//打开文件 fp=fopen("E:\\line.txt","r");if(fp==NULL){ printf(...

c语言 如何读取txt内容到数组
int main(){ FILE *fp;if((fp=fopen("D:\\\\123.txt","r"))==NULL)\/\/判断文件是否打开成功 {\/\/读取D盘下,名为123的文本文件 printf("文件打开失败\\n");exit(0);} else printf("文件打开成功\\n");double a[N];for(int i=0;i<5;i++)\/\/读取五个浮点型数据 fscanf(fp,"%lf,"...

C\/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中
C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\\0'),选取fgets进行读取。示例代码如下:include <stdio.h>#include <stdlib.h>int main...

C程序中如何从txt文件中读入数据!
FILE *fp; \/*打开文件*\/ fp=fopen("d:\\\\a.txt","r"); \/*假设a.txt在d盘根目录下*\/ if(!fp)exit(0); for(j=0;j<4;j++) \/*假定有j行*\/ for(i=0;i<4;i++) fscanf(fp,"%d",&a[j][i]); \/*读一个数据*\/ \/* 关闭文件 *\/ fclose(fp); \/*显示运行结果*\/ for(j=0;j<4;...

c语言 如何读取txt文件中的数据到一个数组并跳过逗号?
已经调好:(思路是,把多余的那个逗号或者换行符按%c的方式读到junk里)include <stdio.h>int main(){int a[2][4];char junk;int i,j;FILE * fp;fp=fopen("filename.txt","r");for (i=0;i<2;i++)for (j=0;j<4;j++)fscanf(fp,"%d%c",&a[i][j],&junk);fclose(fp);...

c++读取.txt文件从最后一行往前读数据
文件操作指针,只能够从前往后。不能够倒着读。可以把文件内容挨着读入到字符数组缓存当中,然后倒着操作即可。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数...

相似回答