c语言怎么把txt格式的文件读到结构体里?
例如把1aaaaa11112bbbbb22223ccccc3333分三次读到一个结构体里...
例如 把
1 a a a a a 1 1 1 1
2 b b b b b 2 2 2 2
3 c c c c c 3 3 3 3
分三次读到一个结构体里 展开
1 a a a a a 1 1 1 1
2 b b b b b 2 2 2 2
3 c c c c c 3 3 3 3
分三次读到一个结构体里 展开
3个回答
展开全部
1.你得先弄会流文件的读取http://blog.csdn.net/sky101010ws/article/details/6744062 这里是流文件的相关函数
2.读取流文件之后,获取的文件中的字符串信息也就是a a a a a 1 1 1 1 b b b b b 2 2 2 2 2 c c c c c 3 3 3 3。然后判断字符串中的空格和换行符,截取其中的a 1 b 2 c 3等字符(都是char型),接着判断1 2 3的ascii码范围,将其转换为整形(利用函数 int atoi(const char *nptr);)。当然,如果你TXT文件中的字符信息都是固定格式的,那就可以省略1 2 3 整形信息的判断,直接将其转换为整形。
3.获取文件中需要的信息a 1 b 2 c 3的同时,将其输入结构体中就可以了。
2.读取流文件之后,获取的文件中的字符串信息也就是a a a a a 1 1 1 1 b b b b b 2 2 2 2 2 c c c c c 3 3 3 3。然后判断字符串中的空格和换行符,截取其中的a 1 b 2 c 3等字符(都是char型),接着判断1 2 3的ascii码范围,将其转换为整形(利用函数 int atoi(const char *nptr);)。当然,如果你TXT文件中的字符信息都是固定格式的,那就可以省略1 2 3 整形信息的判断,直接将其转换为整形。
3.获取文件中需要的信息a 1 b 2 c 3的同时,将其输入结构体中就可以了。
更多追问追答
追问
谢谢了,内容挺全的,调用一个函数,用结构体具体怎么实现头指针的传递,要求读完之后返回头指针。
追答
/* HELLO.C -- Hello, world */
#include "stdio.h"
struct sTemp{
char cTemp;
int iTemp;
struct sTemp *next;
};
void fileIn(struct sTemp *head); /*文件流输入*/
void sTempIn(struct sTemp *p,char cTemp,int iTemp);/*结构体信息录入*/
main()
{
struct sTemp *head,*out;
head=(struct sTemp *)malloc( sizeof( struct sTemp));
head->next=NULL;
fileIn(head);
/*结构体信息输出*/
out=head->next;
while(out!=NULL)
{
printf("cTemp=%c,iTemp=%d\n",out->cTemp,out->iTemp);
out=out->next;
}
getchar();
}
void fileIn(struct sTemp *head)
{
/*下面本应该是文件中char int信息的截取部分,现在直接定义*/
char cTemp[3]={'a','b','c'};
int iTemp[3]={1,2,3};
struct sTemp *p; /*指向结构体链表的尾部*/
int n=3; /*限定输入结构体的次数,你的应该是根据文件里的数据重新设定判断语句*/
p=head;
while(n)
{
sTempIn(p,cTemp[n-1],iTemp[n-1]);
p=p->next; /*p指向尾部*/
n--;
}
}
void sTempIn(struct sTemp *p,char cTemp,int iTemp)
{
struct sTemp *q;
if( (q=(struct sTemp *)malloc( sizeof( struct sTemp)))==NULL)
{
printf("分配空间失败!\n");
return;
}
q->cTemp=cTemp;
q->iTemp=iTemp;
q->next=NULL;
p->next=q;
}
这是我刚编的,你看一下,有不明白的再问我。
展开全部
1、C语言中对结构体数据格式文件进行读取时,必须以二进制格式打开文件,然后按结构体类型变量内存块方式进行数据读取,相关读数据命令为fread()。
函数说明:
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
从stream文件流中,读取nmemb个size大小的数据块到ptr所指的内存buf中,返回读取到的有效数据块数。
2、例如,有如下结构体定义:
typedef struct TEST
{
int num;
double score;
}STRTEST;
STRTEST data ;
FILE *fp = fopen("file.dat", "rb" ) ; //按二进制格式打开文件
int n=fread( &data, sizeof(STRTEST), 1, fp ); //读取一个数据块到变量data中。
3、注意,当结构体中定义的变量有指针类型时,在存储数据时,就不能按结构体进行存储了。因为,指针变量中存储的是内存地址,而程序在不同环境运行时,所使用的内存地址是不同的,只存储内存地址,不能把真正的数据保存下来,所以,即使是正确读取到文件内容,也不能得到当时的结构体内存数据。因而,在存储结构体数据时,要根据结构体类型变量特点采用正确的方法进行存储,才能正确的读取。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先fopen(""")
再用fscanf()函数
再用fscanf()函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询