zoukankan      html  css  js  c++  java
  • 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==' ') //假设这个字符为换行符
                row++; //记录txt数据行数
          }
    row++; //最后一行没有换行符
        printf("行数为%d ",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)是否存在! ", 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行数据: ",i+1);
    for(j=0;j<L;j++)
    {
     printf("%5.3le ", data[i][j]);//.16f能够,le时以科学计数法显示
    }
    printf(" ");
    }

    return 0;
    }

  • 相关阅读:
    Springmvc+Easyui 搜索,新增,删除,修改
    重炉后-文件上传下载
    文件下载
    easyui-dialog里面的东西
    Mysql多表查询
    spring框架-spring.xml配置文件
    面向对象15.3String类-常见功能-判断
    面向对象15.3String类-常见功能-转换
    面向对象15.3String类-常见功能-获取-2
    面向对象15.3String类-常见功能-获取-1
  • 原文地址:https://www.cnblogs.com/llguanli/p/6962194.html
Copyright © 2011-2022 走看看