• 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;
    }

  • 相关阅读:
    [0] 需求管理工具CaliberRM
    [0] 自动化测试工具QTP
    [0] UML建模工具(StarUML)
    [0] C# 扩展方法(Extension Method)
    [0] 统一软件过程(RUP)
    [0] XP敏捷开发
    关于ES6的let,const与var之间的三生三世
    lumen手记:自定义Validate表单验证
    window下python安装pip,切换为国内阿里云镜像
    Lumen开发:简单实现auth用户认证
  • 原文地址:https://www.cnblogs.com/llguanli/p/6962194.html
Copyright © 2020-2023  润新知