如何把txt文件中一列float型数据读入c语言并存为一个数组?
展开全部
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么大的数组,必须得动态分配数组啊
就像一楼那样
如果数组比较小可以
for(i=0;i<120;i++)
fscanf(fp,"%f",&a[i]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询