C语言读取文件大量数据到数组

针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理。

改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100][8]中。

同时加入一个测试函数read(),功能是可以获取txt文档大量数据的行数,本项目中待定使用。

程序如下:

#include<stdio.h>

#include<stdlib.h>

/*

为了以后特定行数的读取,采用宏定义的方法来确定行数

程序中read()读取该文件的行数,当未知文件行数时可使用返回值做全局变量

*/

#define N 115   //行

#define L 8       //列

const char file_name[50] = "d:\\dat.txt";

void read(FILE *fp)

{    int row=0;

char mid;

while(!feof(fp))

{

mid=fgetc(fp); //从txt文本中读取一个字符赋值给mid

if(mid==‘\n‘) //如果这个字符为换行符

row++; //记录txt数据行数

}

row++;
//最后一行没有换行符

printf("行数为%d\n",row);

rewind(fp); //回文件起始位置

}

int main(int argc, char *argv[])

{

FILE *fp;

double data[N][L] = {0.0};   //二维数组

int index[N] = {0};
//二维数组行下标

double temp;

int i, j;

int count = 0;  //计数器,记录已读出的浮点数

if((fp=fopen(file_name, "rb")) == NULL) {

printf("请确认文件(%s)是否存在!\n", file_name);

exit(1);

}

read(fp);     //读取行数

while(1==fscanf(fp, "%le", &temp)) //lf,le都可以,但别的都不可以,%e也不行

{

data[(index[count%L])++][count%L] = temp;

count++;

}

fclose(fp);   //关闭句柄

/******处理数据****************/

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

{   printf("第%d行数据:\n",i+1);

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

{

printf("%5.3le ", data[i][j]);//.16f可以,le时以科学计数法显示

}

printf("\n");

}

return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 09:53:09

C语言读取文件大量数据到数组的相关文章

R语言读取文件数据

R语言读取文件数据 ??1.read.table()函数 2.其他函数的缺省 read.csv(file, header = TRUE, sep = ",", quote="\"", dec=".",fill = TRUE, ...)read.csv2(file, header = TRUE, sep = ";", quote="\"", dec=",",fill =

分批读取文件中数据的程序流程及其C代码实现

一.概述 在实际的软件开发项目中,经常需要处理大量的文件.某些文件中包含了相当多的数据记录数,如作者本人参与过的项目中,一个文件中有好几十万条记录.如果一次性将多条记录读入,则会花费大量的处理时间,且占用大量的内存. 为此,要求对于包含大量数据记录的文件进行分批读取操作,即每一轮读取一定数目的数据记录,待将这些记录处理完成之后,再读取下一批数据.本文介绍分批读取文件中数据的程序流程,并给出了C程序实现. 二.总体程序流程 实现分批读取文件中数据的程序流程如图1所示. 图1 实现分批读取文件中数据

关于C语言读取文件时候多读一行

梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是[!feof(fp)]的错!!! while (!feof(fp)) {  fgets(buffer,256,fp);  j++; } 像这样的代码,是很多C语言学者经常犯的错误!! feof()这个函数是用来判断指针是否已经到达文件尾部的.若fp已经指向文件末尾,则feof(fp)函数值为"真",即返回非零值:否则返回0. 对呀!那有什么问题的呢? 其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到

读取文件并将字符串数组转化为整形数组

举例:通过读取文件,求一维数组的最大子数组 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class xieru { public static void main(String[] args) throws IOException{ //

类似于c语言读取文件进行解析

$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/'.date('Ym').'/'.date('d').'_error.log';            //$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/201701/19_error.log';                   if(!file_exists($l

C语言读取文件

1.首先我们要在D盘下新建一个文本文件(文件名为:AAA.txt),并在文件里面写入任意字符,如果没有此文件会因为找不到文件而造成文件打开失败. 2.运行程序,将文件内的字符逐个读取输出到屏幕上 3.若打开文件失败,则如下图所示,此时应检查文件路径是否正确 fopen函数说明: 作用:用来打开一个文件 格式:FILE * fopen(const char * path,const char * mode); 返回值:打开文件成功返回一个文件指针,若打开文件失败则返回NULL 参数说明: path

FileInputStream 读取文件数据的输入字节流

1 package com.inputstream; 2 3 /* 4 File类: 用于描述一个文件或者文件夹的. 5 6 通过File对象我们可以读取文件或者文件夹的属性数据,如果我们需要读取文件的内容数据,那么我们需要使用IO流技术. 7 8 IO流(Input Output) 9 10 IO流解决问题: 解决设备与设备之间的数据传输问题. 内存--->硬盘 硬盘--->内存 11 IO流技术: 12 IO流分类: 13 如果是按照数据的流向划分: 14 输入流 15 输出流 16 如果

使用Java FileInputStream读取文件内容到字节数组中

package date0802; import java.io.FileInputStream; import java.io.IOException; public class InputStream { @SuppressWarnings("resource") public static void main(String[] args) throws IOException { FileInputStream fileInputStream = new FileInputStr

C零基础视频-47-C语言操作文件

目录 C语言文件操作函数 fopen:打开或创建文件 fopen中的mode参数 fclose:关闭文件 C语言文件操作函数 C标准库中提供了一系列的函数,来操作文件.因为C库函数做了这个中间层,屏蔽掉了操作系统上对于文件的不同处理. 关于文件的常见基本操作有: 打开文件:创建文件或打开文件载体(磁盘)中已有的文件 关闭文件:类似free,释放掉内存中与文件有关的动态资源 读取文件:数据由文件载体(磁盘)到内存 写入文件:数据由内存到文件载体(磁盘) fopen:打开或创建文件 fopen的原型