更新时间2018-12-22 05:28:34
详情见图。。。急啊。。。
根据txt文件中数据的格式,可以用fscanf把数据读取到数组中。
下面以一种最基本的情况为例,给出参考代码。
假定结构体格式为
12345struct test{ int i; float f;};文本文件约定,第一行为存储结构体总数,从第二行起,每行为一个结构体的数据。每个结构体内数据以空格分隔。
样本文件in.txt如下:
1234541 2.03 4.05 6.07 8.0那么代码可以写作:
123456789101112131415161718192021222324252627282930313233#include <stdio.h>#include <stdlib.h>int main(){ struct test *v = NULL; int n, i; FILE *fp; fp = fopen("in.txt", "r");//打开文件 if(fp == NULL)return -1; //文件打开失败 fscanf(fp, "%d", &n); //读取结构体数据总数。 if(n <= 0)//数据总数非法 { fclose(fp); return -2; } v = (struct test*)malloc(sizeof(*v) * n); // 分配内存空间。 for(i = 0; i < n; i ++) if(fscanf(fp, "%d%f", &v[i].i, &v[i].f) != 2) break;//读取数据。 //将读取到的数据输出。 printf("文件中预计有数据%d个,实际读到%d个 ", n, i); n = i; for(i = 0; i < n; i ++) printf("%d,%f ", v[i].i, v[i].f); fclose(fp);//关闭文件 free(v);//释放内存 return 0;}在以上文本文件及程序下,运行后的结果为:
12345文件中预计有数据4个,实际读到4个1,2.0000003,4.0000005,6.000000你应该自己做,遇到问题再提问