社区
C语言
帖子详情
请帮忙,如何把文件内容读取后存入数组
huoleifeng
2007-07-03 04:18:46
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50]
如何把结构如下的文件中的数据读取后存入数组?
[第一名]
姓名=***;
性别=***;
年龄=***;
[第二名]
姓名=***;
性别=***;
年龄=***;
.
.
.
希望能给出源代码,一定要C语言的,谢谢!!!
...全文
351
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
文件
中的数据写入结构体数组的函数无法正常使用。程序代码如下:#include#include#include #includestruct txl /*定义结构体数组*/{char name[20];char phone...
numpy--
读取
CSV,一维数组转二维数组并写入Excel
文件
中
由于本菜鸟是java工程师,很久没写python了,最近
帮忙
写个接口,顺便学习学习。没用过numpy,查了很久,网上乱七八糟的资料,真难。最后看了reshape源码,将一维数组直接reshape,居然可以用,nice!利用python的numpy框架,将CSV
文件
中的数据
读取
出来,整合到二维数组中,并写入Excel
文件
中。定义一个大小12的一维数组,再reshape转换成3行4列的矩阵。相同原理:自定义一个大小为6的一维数组 ,再转换。2.1导入操作Excel的依赖。
python
读取
大文本
文件
并存入numpy时过于费时的问题及猜测
因需要
读取
大文本
文件
(约有1,300,000行,40兆),并简单处理存入numpy数组中,运行过程中发现随
读取
数据的增加,耗费时间显著增加,稍作修改后运行速度显著提升,不解,记之,希望大家
帮忙
解惑。 初步猜测(未验证):在原始代码中对numpy数组进行了vstack,而这个过程可能对已有数组进行了类似遍历的操作,才会出现随数组中数据增加产生时间上的显著增加。 1.原始代码 此代码在前期运行较快,在运行接近4,500行左右时,速度开始逐步变慢,最后花了很长时间也没能运行出结果,不知是何种原因。 de
python打开并
读取
csv
文件
_利用Python
读取
CSV
文件
并计算某一列的均值和方差
近日朋友需要
帮忙
对excel的csv
文件
进行处理,求取某银行历年股价的均值方差等一系列数据
文件
的构成很简单,部分如下所示总共有接近七千行数据,主要的工作就是将其中的股价数据提取出来,放入一个数组之中,然后利用numpy模块即可求出需要的数据。这里利用了csv模块来对
文件
进行处理,最终实现的代码如下:importcsvimportnumpy as npwith open(‘pingan_stock....
java实现从
文件
中获取json,并转存到excel中
昨天测试让
帮忙
处理一下接口返回数据,数据量太大,处理费劲???? 主要需求: 接口返回的数据是个长json,需要把其中的某些字段提取出来存到excel 需要提取的字段与数据:ID,NAME,NM_CODE,SPEC_ID 思路: 1.因为json过长,所以就先存到txt中,用fileReader和StringBuffer获取整个json字符串 2.获取到的字符串通过fastjson转换为List<Map>格式 3.把转换后的list转换成excel工作簿,通过fileOutputStream写到
C语言
69,378
社区成员
243,075
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章