c语言文件的读入结构体。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student{
int num;
char name[25];
float score[6];
}stutype;
typedef struct stu
{
stutype data;
struct stu* next;
}Lstutype;
typedef Lstutype* pstutype;
pstutype a[30];
void main()
{
FILE *fp;
int k,b,m,n;
int i=0,j;
char filename[100];
Lstutype d[30];
printf("该班的人数(最多不超过30个):\n");
scanf("%d",&m);
printf("科目个数(最多不超过6个):\n");
scanf("%d",&n);
for(i=0;i<m;i++)
a[i]=&d[i];
printf("请输入文件名(含扩展名):");
scanf("%s",filename);
while((fp=fopen(filename,"r"))==NULL)
{
printf("can not open file %s\n",filename);
printf("请重新输入文件名(含扩展名):");
scanf("%s",filename);
}
for(i=0;i<m;i++)
{
fscanf(fp,"%s",a[i]->data.name);
fscanf(fp,"%d",&(a[i]->data.num));
for(j=0;j<n;j++)
fscanf(fp,"%6.2f",&(a[i]->data.score[j]));
}
for(i=0;i<m;i++)
{
printf("%s%d",a[i]->data.name,a[i]->data.num);
for(j=0;j<n;j++)
printf("%6.2f",a[i]->data.score[j]);
}
fclose(fp);
}

而文件是这样的:
luo 5 89.00 99.00
cao 6 99.00 54.00

当我输入m为2,n为2时。

为什么输出这样的数据:
luo5-107374176.00-107374176.0089.0099-107374176.00-107374176.00

第1个回答  2013-12-19

#include<stdio.h>

#include<stdlib.h>

#include<string.h>


typedef struct student

{

 int num;

 char name[25];

 float score[6];

}stutype;



typedef struct stu

{

 stutype data;

 struct stu* next;

}Lstutype;


typedef Lstutype* pstutype;

pstutype a[30];



int main()

{

FILE *fp;

int k,b,m,n;

int i,j;

char filename[100];

Lstutype d[30];

    

    i = 0;

    

    printf("该班的人数(最多不超过30个):\n");

scanf("%d",&m);

    printf("科目个数(最多不超过6个):\n");

    scanf("%d",&n);

    

for(i = 0;i < m;i ++)

    {

a[i] = &d[i];

    }

    printf("请输入文件名(含扩展名):");

scanf("%s",filename);

while((fp=fopen(filename,"r"))==NULL)

{

printf("can not open file %s\n",filename);

printf("请重新输入文件名(含扩展名):");

scanf("%s",filename);

}

    

    for(i = 0;i < m; i++)

{

fscanf(fp,"%s",a[i]->data.name);

fscanf(fp,"%d",&(a[i]->data.num));

        //fscanf(fp,"%.2f",&(a[i]->data.score));  //测试用


        for(j = 0;j < n;j++)

        {

//fscanf(fp,"%6.2f",&(a[i]->data.score[j])); 

            fscanf(fp,"%f",&(a[i]->data.score[j]));   //输入这地方的格式符你改下

        }

        

}

    

    for(i = 0;i < m;i++)  // 输出语句

{

printf("%s %d ",a[i]->data.name,a[i]->data.num);

        for(j = 0;j < n;j++)

        {

          printf("%6.2f",a[i]->data.score[j]);

        }

        

        printf("\n");

}

    

    

fclose(fp);

system("pause");

return 0;

}

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语言如何创建文件并将结构体数据存进去
c语言如何创建文件并将结构体数据存进去?需要使用文件操作函数fwrite和fread。 读物文件并写入结构体,同时保存文件的代码如下:1、写 FILE* fp = fopen("card.dat

c语言如何从文件读入,并存放在链表中
struct filetext{char buf[BUFSIZE];struct filetext *next;};\/\/读取文件,并插入进链表的函数,filename为要读取的文件名,head为链表的头节点,函数返回插入新节点后链表的头节点 struct filetext * readfile(char * filename,struct filetext * head){ struct filetext * new = (struct filete...

C语言 从一个二进制文件里读取一个结构体时出现如图的显示(我先前已经...
1、程序出现死循环了,文件运行成功了,但是所有属性都是0或者空,检查一下是不是再写循环代码的时候那个值的属性或者条件写错了,导致出现了死循环;2、看一下主键是不是调用数据里面填写正确,或者在带入的时候是不是单次书写正确,C语言需要区分大小写,如果不区分大小写系统不识别;3、程序使用调用...

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

c语言怎么用文件保存和读取 结构体数组\/
int a;char s[10] ;double d ;} tr[3] , tw[3] ={ {1,"hello1" , 100 },{2,"hello2" , 90},{3,"hello3", 200} } ; \/\/定义一个结构体数组 FILE *fp ;fp=fopen("struct.dat" , "wb" );if ( fp == NULL )return -1 ;fwrite( (char*)tw , sizeof(struct test...

C语言怎样将.txt文件中的数据写入到结构体中去
txt文件中的数据写入到结构体中去的源代码如下:include<stdio.h> include <string.h> \/\/可以退出的头文件 include <stdlib.h> \/\/结构体的长度 define DATALEN 15 \/\/函数声明 \/\/定义结构数组 struct wordUnit{ int id; \/\/id char word[10]; \/\/词语 char depId[10]; \/\/依存词语的id char...

C语言如何从文件中读取定界不定长的数据记录到结构体中?
从你的数据中可以看中,基本上是以"090302" "王三" "男" 542.0 07\/12\/1990 "安徽" "教育" F这样为一节的,这样的一节也正好对应你的一个结构体。所以,一种方式是一次把文件的所有内容读入缓冲区,再进行逐节的解析。另一种方式是一次读一段比一节更长的数据段入缓冲区,一次解析一个结构...

C语言文件读写结构体里面的数据怎样存到磁盘文件上
1、首先打开VC++6.0。2、选择文件,新建。3、选择C++ source file 新建一个空白文档。4、首先声明头文件,#include<stdio.h>。5、主函数,定义变量main( ){ FILE *fp; int i; 需要一个结构体,struct rec{ \/*定义结构体类型*\/ char id[10];。6、主要代码if( (fp=fopen("d:\\\\in...

c语言 如何把如图txt中的内容读入到结构体中?
读取文件,回车断为行 再按空格,断为字段,分别存入结构体成员中 这里没处理文件内容有错误的情况

相似回答