社区
C语言
帖子详情
请帮忙,如何把文件内容读取后存入数组
huoleifeng
2007-07-03 04:18:46
typedef struct student
{
char name[10];
char gender[4];
int age;
}STUDENT;
STUDENT students[50]
如何把结构如下的文件中的数据读取后存入数组?
[第一名]
姓名=***;
性别=***;
年龄=***;
[第二名]
姓名=***;
性别=***;
年龄=***;
.
.
.
希望能给出源代码,一定要C语言的,谢谢!!!
...全文
375
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++实现从.txt
文件
中
读取
数据
存入数组
,将数组数据写入.txt
文件
本文介绍了如何使用VS2017编译器实现两种不同场景下读写.txt
文件
:预知数组大小的存储与未知大小的字符串数组处理。包括从
文件
读取
存入数组
、数组数据写入
文件
,以及处理字符串数组的方法。
C语言
读取
文件
内容
,保存到数组里面
本文介绍使用C语言从命令行输入
文件
名,
读取
文件
内容
,统计行数,并将
内容
保存到数组中。首先,固定大小数组实现基本功能;其次,动态内存分配处理任意大小
文件
,并将数据保存到新
文件
。
读取
TXT
文件
中文本并
存入数组
(Java)
该博客介绍了如何
读取
TXT
文件
内容
并存储到数组中,通过BufferedReader逐行
读取
文件
,使用StringBuilder构建字符串,然后转换为String数组。还提出了将数据存储到Student类的ArrayList中以优化数据结构,并提供了
读取
带有学生信息的TXT
文件
的示例代码,实现了按行
读取
、解析学生信息并存储到ArrayList中。
C语言结课大作业(图书馆超市寝室):从
文件
中
读取
一个结构体数组和把修改后的结构体数组存入到一个
文件
中
该博客以书籍信息结构体数组为例,介绍了用C语言从
文件
中
读取
结构体数组,以及将修改后的结构体数组存入
文件
的方法。还提及修改结构体数组中书籍信息再导入
文件
的操作,适合C语言初学者参考。
【Java】将二维数组存入txt
文件
及
读取
txt
文件
转换为二维数组(超详细备注)
本文详细介绍了如何使用Java将二维数组存入TXT
文件
,以及如何从TXT
文件
读取
并转换为二维数组的方法。包括创建字符输出流、写入数据、关闭流等步骤,并提供了完整的代码示例。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章