如何把txt文件中一列float型数据读入c语言并存为一个数组?

1.00001.00002.0000。。。总共有120000个数据写出代码追加100分... 1.0000
1.0000
2.0000。。。总共有120000个数据写出代码追加100分
展开
 我来答
wdwy003
推荐于2016-10-13 · TA获得超过2113个赞
知道小有建树答主
回答量:1073
采纳率:0%
帮助的人:1061万
展开全部
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h> 
int main(void)
{
 float  *data = NULL;
 char  buf[32];
 FILE  *fp = NULL;
 int  i = 0;
 
 if((fp = fopen("test.txt", "r")) == NULL)
 {
  printf("open file error!\n");
  return -1;
 }
 data = (float*)malloc(sizeof(float) * 120000);//分配内存存储数据
 if(data == NULL)
 {
  printf("momery error!\n");
  return -1;
 }
 while(fgets(buf, 30, fp))
 {
  *(data + i) = atof(buf);
  printf("%f\n", *(data + i));
  i ++; 
 }//data就是你要的数组
 
 free(data); //释放内存
 fclose(fp);
 
 return 0;
}
更多追问追答
追问
不对,只是读取了很小一部分数据。用二维数组存,是不是可以放溢出?
追答
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main(void)//我的测试程序 120000数据 
{
 float  *data = NULL;
 char  buf[32];
 FILE  *fp = NULL;
 int  i = 0;
 
 if((fp = fopen("test.txt", "w+")) == NULL)
 {
  printf("open file error!\n");
  return -1;
 }
 for(i = 0;i < 120000;i ++)
 {
  fprintf(fp, "%f\n", i * 1.0);
 }
 fclose(fp);
 if((fp = fopen("test.txt", "r+")) == NULL)
 {
  printf("open file error!\n");
  return -1;
 } 
 data = (float*)malloc(sizeof(float) * 120000);//不知道你怎么测试的 这里的数字是缓冲区的大小
 if(data == NULL)
 {
  printf("momery error!\n");
  return -1;
 }
 i = 0;
 while(fgets(buf, 30, fp))
 {
  buf[strlen(buf) - 1] = '\0';
  *(data + i) = atof(buf);
  if(i % 10000 == 0)
  {
   printf("%s ||", buf);
    printf("%f\n", *(data + i));
   //getchar();
   }
   i ++;
 }
 
 free(data); 
 fclose(fp);
 
 return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-03-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6619万
展开全部
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "stdlib.h"
void main(void){
float a[120000];
FILE *frp;
int i=0,j;
if((frp=fopen("test.txt","r"))==NULL){
printf("Can't the file...\n");
exit(0);
}
while(!feof(frp))
fscanf(frp,"%f ",a+i++);
for(j=0;j<i;printf("%f ",a[j++]));//Look at...
printf("\n");
fclose(frp);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2014-03-14 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1064万
展开全部

这么大的数组,必须得动态分配数组啊

就像一楼那样

如果数组比较小可以

for(i=0;i<120;i++)
fscanf(fp,"%f",&a[i]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式