C语言批量数据到动态二维数组
上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数。通过它来动态建立所需的二维数组。因此。通过文件操作和动态创建二维数组结合起来,将大量的数据动态的放入矩阵中,不知道这种思想是否正确,下午把程序执行出来了。将程序贴上来。欢迎大家一起探讨:对于有规律的大数据txt文档怎样高效而准确的读入数组或矩阵中呢???指教!。谢谢
程序:
#include<stdio.h>
#include<stdlib.h>
#define N 8   //8列
#define L 100  //100行
const char file_name[50] = "d:\\dat.txt";
int main(int argc, char* argv[])
{
     int row,column;
     double **data;
    int index[N] = {0};   //二维数组列下标
double temp;  
int i, j;
int count = 0;  //计数器。记录已读出的浮点数
FILE *fp;
     
row=L;
     column=N; //通过宏定义来确定行数、列数
if((fp=fopen(file_name, "rb")) == NULL) 
{
printf("请确认文件(%s)是否存在!\n", file_name);
exit(1);
}
     data=(double **)malloc(row*sizeof(double *));
     for(i=0;i<row;i++)
         data[i]=(double *)malloc(column*sizeof(double));  //动态二维数组的建立(行列限制内存大小)
    ////////将txt数据读入该动态二维数组///////////
    while(1==fscanf(fp, "%lf", &temp)) {
data[(index[count%N])++][count%N] = temp;
count++;
}
////////////////显示///////////////////
for(i=0;i<row;i++)
     {   printf("第%d行元素为: \n", i+1);
         for(j=0;j<column;j++)
         {
             //data[i][j]=i*row+j*0.01;
             printf("%5.3f ",data[i][j]);   //动态数组的成员都能够用正常的数组下标 data[i][j]
         }
         printf("\n");
     }
     free(data);   //释放内存空间。重要,可是好像写的有问题的
return 0;
}
截个效果图上来吧:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
C语言批量数据到动态二维数组的更多相关文章
- 以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组
		学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简 ... 
- C++ 里 构建动态二维数组
		//****动态二维数组 /* int m=3; int **data; int n=2; data=new int*[m]; for(int j=0;j<m;j++) { data[j]=ne ... 
- Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印
		1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ... 
- C++动态二维数组的创建
		两种方式. 一,二级指针,创建2行3列的动态二维数组. 这里,p指向的是2个地址,这两个地址各指向长度为3的一维整型数组. 在内存中,每行元素内部顺序排列.两行元素的首地址不同,p[1]与p[2]存放 ... 
- C++建立动态二维数组
		C++建立动态二维数组主要有两种方法: 1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组 int * ... 
- 动态二维数组赋值及for循环遍历和toString遍历
		package com.Summer_0421.cn; import java.util.Arrays; /** * @author Summer * 动态二维数组赋值及for循环遍历和toStrin ... 
- 【C/C++】vector 动态二维数组
		声明 vector<vector<int> vec; //赋值思路可以从这个很基础的操作里看出来 vector<int> a; a.push_back(1); a.pus ... 
- C/C++动态二维数组的内存分配和释放
		C语言: 1 //二维数组动态数组分配和释放 //数组指针的内存分配和释放 //方法一 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(ch ... 
- 论C语言中二级指针和二维数组之间的区别
		刚开始学习C语言的时候,觉得一个数组可以定义一个一级指针去访问,想当然的就觉得可以定义一个二级指针去访问二维数组.很显然这是错误的. 我们来看看C语言的数组在内存中的存储方式. 实际上C语言中的数组, ... 
随机推荐
- vue子组件向父组件传递数据
			子组件 <template> <div id="header"> <input type="text" v-model=" ... 
- Write with Vim (1)
			Write with Vim (1) 本文出自Svitter的blog 原文在之前的也曾发表 大约在一年前使用vim?这个也是个不确定的时间.具体什么时间使用Vim早已经忘记了. 现在用的还算顺手,但 ... 
- Flask deployment on gunicorn with flask script
			https://stackoverflow.com/questions/34265870/flask-deployment-on-gunicorn-with-flask-script 依赖 Flask ... 
- JavaScript 笔记(7) -- 在HTML中嵌入 js (外部引用)
			本节主要说明,在HTML中嵌入自定义 JavaScript.通过HTML的script标签加载JavaScript文件 为防止网页加载缓慢,也可以把非关键的JavaScript放到网页底部,例如下面的 ... 
- 利用C#原有函数对数组进行降序排列
			原文发布时间为:2009-03-04 -- 来源于本人的百度文章 [由搬家工具导入] 利用 Array类的静态方法 Sort可以对数组进行升序排列。如下: Array.Sort(数组名); ... 
- 添加一种emit的应用,反射发出,较直接调用稍慢,但好过反射与表达式树。
			System.Reflection.MethodInfo mInfo = typeof(TypeParse).GetMethod("Add", System.Reflection. ... 
- Spring积累总结
			1.spring 的优点: 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很 ... 
- 通过Java实现斗地主
			功能:洗牌,发牌,对玩家手中的牌排序,看牌 package demo06; import java.util.ArrayList; import java.util.Collections; impo ... 
- Goodbye 2017 B
			[题意]: 鲍勃编程一个机器人在2d迷宫中导航.迷宫有一些障碍.空单元格用'.'表示,其中障碍物用'#'表示.迷宫中有一个机器人.它的起始位置用字符“S”表示.这个位置没有任何障碍.迷宫中也有一个出口 ... 
- Spring Cloud Stream介绍-Spring Cloud学习第八天(非原创)
			文章大纲 一.什么是Spring Cloud Stream二.Spring Cloud Stream使用介绍三.Spring Cloud Stream使用细节四.参考文章 一.什么是Spring Cl ... 
