社区
C语言
帖子详情
请帮忙,如何把文件内容读取后存入数组
huoleifeng
2007-07-03 04:18:46
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50]
如何把结构如下的文件中的数据读取后存入数组?
[第一名]
姓名=***;
性别=***;
年龄=***;
[第二名]
姓名=***;
性别=***;
年龄=***;
.
.
.
希望能给出源代码,一定要C语言的,谢谢!!!
...全文
366
9
打赏
收藏
请帮忙,如何把文件内容读取后存入数组
typedef struct student { char name[10]; char gender[4]; int age; }STUDENT; STUDENT students[50] 如何把结构如下的文件中的数据读取后存入数组? [第一名] 姓名=***; 性别=***; 年龄=***; [第二名] 姓名=***; 性别=***; 年龄=***; . . . 希望能给出源代码,一定要C语言的,谢谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
星羽
2007-07-10
打赏
举报
回复
ding
ffll8281
2007-07-10
打赏
举报
回复
楼上,你的readini函数没有读懂啊,可否加上注释
gxlian
2007-07-04
打赏
举报
回复
以上两种都可,已测试!
gxlian
2007-07-04
打赏
举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50];
int readspace(FILE* tempfp)
{
char ch;
ch = getc(tempfp);
while(ch == ' ' || ch == '\n')
{
ch = getc(tempfp);
}
if(ch == EOF)
return 0;
fseek(tempfp,-1L,1);
return 1;
}
void main()
{
FILE *fp;
if((fp = fopen("student.txt","r")) == NULL)
{
printf("Can't open student.txt.\n");
exit(-1);
}
char order[50][3];
int exitflag;
int i = 0;
while(!feof(fp))
{
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"[第%s",order[i]);
if(exitflag == 0)
break;
int orderlenth = strlen(order[i]) - strlen("名]");
order[i][orderlenth] = '\0';
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"姓名=%s",students[i].name);
if(exitflag == 0)
break;
int namelenth = strlen(students[i].name)-1;
(students[i].name)[namelenth] = '\0';
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"性别=%s",students[i].gender);
if(exitflag == 0)
break;
int genlenth = strlen(students[i].gender)-1;
(students[i].gender)[genlenth] = '\0';
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"年龄=%d;",&students[i].age);
if(exitflag == 0)
break;
i++;
}
//test result
for(int j = 0; j < i; j++)
{
printf("第%s名: %s %s %d\n",order[j],students[j].name,students[j].gender,students[j].age);
}
fclose(fp);
}
gxlian
2007-07-04
打赏
举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50];
int readspace(FILE* tempfp)
{
char ch;
ch = getc(tempfp);
while(ch == ' ' || ch == '\n')
{
ch = getc(tempfp);
}
if(ch == EOF)
return 0;
fseek(tempfp,-1L,1);
return 1;
}
void main()
{
FILE *fp;
if((fp = fopen("student.txt","r")) == NULL)
{
printf("Can't open student.txt.\n");
exit(-1);
}
int order = 0;
int exitflag;
while(!feof(fp))
{
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"[第%d名]",&order);
if(exitflag == 0)
break;
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"姓名=%s",students[order].name);
if(exitflag == 0)
break;
int namelenth = strlen(students[order].name)-1;
(students[order].name)[namelenth] = '\0';
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"性别=%s",students[order].gender);
if(exitflag == 0)
break;
int genlenth = strlen(students[order].gender)-1;
(students[order].gender)[genlenth] = '\0';
exitflag = readspace(fp);
if(exitflag == 0)
break;
exitflag = fscanf(fp,"年龄=%d;",&students[order].age);
if(exitflag == 0)
break;
}
//test result
for(int i = 1; i < 50; i++)
{
printf("第%d名: %s %s %d\n",i,students[i].name,students[i].gender,students[i].age);
}
fclose(fp);
}
believefym
2007-07-03
打赏
举报
回复
#include<stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50];
int main()
{
FILE* pf = fopen("g:\\c\\TextFile1.txt","r");
char t1[80]={0};
char name[80]={0};
char gender[80]={0};
char age[80]={0};
int i=0;
int ln = strlen("姓名=");
int lg = strlen("性别=");
int la = strlen("年龄=");
while (fscanf(pf,"%s",t1)!=EOF)
{
fscanf(pf,"%s%s%s",name,gender,age);
strncpy(students[i].name,name+ln,strlen(name)-ln-1);
strncpy(students[i].gender,gender+lg,strlen(gender)-lg-1);
char aget[10]={0};
strncpy(aget,age+la,strlen(age)-la-1);
students[i].age = atoi(aget);
printf("%d\tname:%s\tgender:%s\tage:%d\n",i,students[i].name,students[i].gender,students[i].age);
++i;
}
fclose(pf);
system("pause");
return 0;
}
cceczjxy
2007-07-03
打赏
举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50];
void cut(char *tmp)
{
if(tmp==NULL)return;
while(*tmp)
if(*tmp=='\n'||*tmp=='\r')
{
*tmp=0;
return ;
}
else tmp++;
}
void readini(FILE *file,char *group,char *member,char *values)
{
char buf[128],tmpbuf1[128],tmpbuf2[128],*p1;
int len=0,flag=0;
memset(buf,0,128);
rewind(file); //
while(fgets(buf,128,file))
{
p1=buf;
cut(buf);
if(strcmp(buf,group)==0){flag=1;continue;}//
if(flag)
{
if((strlen(buf)==0)||(*p1=='['))
{
values=NULL;
break;
}//
len=strcspn(buf,"="); //
memset(tmpbuf1,0,128);
memset(tmpbuf2,0,128);
strncpy(tmpbuf1,buf,len);
p1+=len;
p1++;
if(strcmp(tmpbuf1,member)==0)
{
strcpy(values,p1);
break;
}//
}
memset(buf,0,128);
}
cut(values);
}
int main()
{
char buf[128],temp[32];
FILE *file;
int i;
file=fopen("file.txt","r");
for(i=1;i<50;i++)
{
memset(temp,0,sizeof(temp));
sprintf(temp,"[第%d名]",i);//怎么循环汉字,你自己想想吧,我没想好
memset(buf,0,sizeof(buf));
readini(file,temp,"姓名",buf);
strcpy(students[i].name,buf);
memset(buf,0,sizeof(buf));
readini(file,temp,"性别",buf);
strcpy(students[i].gender,buf);
memset(buf,0,sizeof(buf));
readini(file,temp,"年龄",buf);
students[i].age=atoi(buf);
}
fclose(file);
}
neosu
2007-07-03
打赏
举报
回复
使用FILE * fp = fopen(文件名, "r"); 打开文件
使用fgets一行行提取文本
判断文本的特征匹配到你的变量。
jixingzhong
2007-07-03
打赏
举报
回复
读取后一个一个赋值
c语言结构体数组存入
文件
_关于从
文件
中
读取
数据并写入结构体数组
已结贴√问题点数:25回复次数:10 关于从
文件
中
读取
数据并写入结构体数组各位大大好,本人新手一枚,最近写简单的通讯录的c程序,其他功能完好,最后一个将txt
文件
中的数据写入结构体数组的函数无法正常使用。...
numpy--
读取
CSV,一维数组转二维数组并写入Excel
文件
中
利用python的numpy框架,将CSV
文件
中的数据
读取
出来,整合到二维数组中,并写入Excel
文件
中。定义一个大小12的一维数组,再reshape转换成3行4列的矩阵。相同原理:自定义一个大小为6的一维数组 ,再转换。2.1导入...
python
读取
大文本
文件
并存入numpy时过于费时的问题及猜测
因需要
读取
大文本
文件
(约有1,300,000行,40兆),并简单处理存入numpy数组中,运行过程中发现随
读取
数据的增加,耗费时间显著增加,稍作修改后运行速度显著提升,不解,记之,希望大家
帮忙
解惑。 初步猜测(未验证...
C#
读取
csv数据
最近忙的一个项目中有对csv数据的操作,主要是读的问题,以为很简单,不就是数据按行
读取
后,用逗号来分隔吗! 刚开始确实也是这么做的,直到遇到了单元格中含有逗号的情况,就懵逼了。 举个栗子: 有这么一个...
Java解析多层嵌套JSON数组并将数据存入数据库示例
今天前端问我能不能
帮忙
把菜单数据存进去,我看了下大概就是下面这样的数据结构,就是一个 JSON 数组,然后里面有 children。这里加了个临时 ID 用来处理上下级的父子关联。可以看到数据正常存进去了。
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章