首页 > 其他分享 >c语言读取文件中的数据到结构体和数组

c语言读取文件中的数据到结构体和数组

时间:2023-11-22 16:45:00浏览次数:30  
标签:语言 fp file rows 读取 int 数组 printf size

1、数组

#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 100
#define MAX_SIZE 100

int main()
{
    int **arr;
    int rows, cols;
    int rows_size, cols_size = 5;
    int num, i = 0;
    int arr_size = 0;
    FILE *fp = NULL;
    fp = fopen("filename.txt", "r");
    // open file and read data
    if (fp != NULL)
    {
        printf("open file success\n");
        rows = 0;
        cols = 0;
        while (fscanf(fp, "%d", &num) == 1)
        {
            i++;
            if (i % cols_size == 0)
            {
                rows++;
            }
        }
        if (i % cols_size != 0)
        {
            rows++;
        }
        rows_size = rows;
        arr_size = i;
        printf("data count is %d\n", i);
        printf("rows is %d\n", rows_size);

        // dynamic allocate memory
        arr = (int **)calloc(rows_size, sizeof(int *));
        for (i = 0; i < rows; i++)
        {
            arr[i] = (int *)calloc(cols_size, sizeof(int));
        }

        fp = fopen("filename.txt", "r");
        if (fp != NULL)
        {
            i = 0;
            while (fscanf(fp, "%d", &num) == 1)
            {
                if (i < arr_size)
                {
                    arr[i / cols_size][i % cols_size] = num;
                    i++;
                }
            }
        }
        fclose(fp);

        // print data
        printf("the data from file is:\n");
        for (i = 0; i < rows_size; i++)
        {
            for (int j = 0; j < cols_size; j++)
            {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }

        // free memory
        for (i = 0; i < rows_size; i++)
        {
            free(arr[i]);
        }
        free(arr);
    }
    else
    {
        printf("open file failed\n");
        return 0;
    }
    // close file
    if (fclose(fp) == 0)
    {
        printf("close file success\n");
    }
    else
    {
        printf("close file failed\n");
    }
    return 0;
}

2、结构体

#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 100
#define MAX_SIZE 100

int main()
{
    // char buf[BUF_SIZE];
    typedef struct _sPerson
    {
        int num;
        char name[MAX_SIZE];
        char email[MAX_SIZE];
        int phone;
    } sPerson;
    sPerson *ps = (sPerson *)(malloc(sizeof(sPerson)));

    FILE *fp = NULL;
    fp = fopen("./data_structure.txt", "r");
    if (fp != NULL)
    {
        printf("open file success\n");
        while (fscanf(fp, "%d %s %s %d", &(ps->num), ps->name, ps->email, &(ps->phone)) == 4)
        {
            printf("%d %s %s %d\n", ps->num, ps->name, ps->email, ps->phone);
        }
    }
    else
    {
        printf("open file failed\n");
        return -1;
    }
    // close file
    if (fclose(fp) == 0)
    {
        printf("close file success\n");
    }
    else
    {
        printf("close file failed\n");
    }
    free(ps);
    return 0;
}

 

标签:语言,fp,file,rows,读取,int,数组,printf,size
From: https://www.cnblogs.com/dogingate/p/17849674.html

相关文章

  • 14-基础SQL-DCL(数据控制语言)
    DCL-介绍DCL英文全称是DataControlLanguage(数据控制语言),用来管理数据库用户、控制数据库的访问权限DCL-管理用户查询用户(用户信息通常保存在mysql数据库下的user表)USEmysql;SELECT*FROMuser;创建用户CREATEUSER"用户名"@"主机名"IDENTIFIED"密码";......
  • 快手视频评论区用户ID提取工具,可采集UID快手号,评论内容时间,易语言开源版!
    这是之前给某个客户开发的,定制的,可以输入用户的作品连接,然后导入COOKIE后就会自动提取评论区下载的所有用户评论内容用户di,快手号这些信息,用的是鱼刺_http模块,和“gzip.dll”组件,具体源码和界面我下面会开源出来,仅供大家学习。软件界面: 采集效果: 源码分享:==============......
  • 数组的声明和创建
    packagearray;importsun.print.SunMinMaxPage;publicclassArrayDemo01{//变量类型变量名=变量的值;//数组类型:在变量后加[]即可或者在int后加publicstaticvoidmain(String[]ar){//string[]字符型数组args是变量int[]nums;//1.声明......
  • 雷电模拟器过检测工具,逍遥雷电夜神mumu支持,改真机环境,刷入机型,实现独立IP,易语言开源吧
    这个模拟器支持雷电、逍遥、夜神、mumu这几个都支持的,而且还能一键刷入面具默认是德尔塔版本,然后还能一键刷入LSP框架【需重启才生效】,支持模拟arm手机架构可以过一些软件的检测,算是中控类的,还能独立IP,下面是软件的界面和开源代码,仅供代码学习,有点基础的才行,小白可以学习学习结构......
  • 个人征信pdf无痕修改工具,一键生成电子版报告,解除密码编辑器,易语言开源代码!
    提前说明一下,这个不管任何文档只要带有密码的都有解除密码,PDF是最常见的,比如征信报告,我们改内容删记录,加记录都是需要密码的,PS的肯定不行,因为默认导出来的是PDf格式,而网上有一些暴力破解都是字典破解的,估计你破解一个月都破解不出来,这个工具很简单,只需要将带有密码的PDF文件导入进......
  • C语言数据结构_查找并删除单链表中最大值结点并返回值
    代码实现1#include<stdio.h>2#include<stdlib.h>34typedefstructNode//定义一个结构体5{6floatdata;7structNode*next;8}Node;910Node*Chuangzao_LinkedList()//创建一个链表11{12Node*head=NULL;//......
  • 稀疏数组(sparseArray)
    稀疏数组1.二维数组转成稀疏数组//将二维数组转成稀疏数组//1.得到非零个数sumintsum=0;for(inti=0;i<chessArray.length;i++){for(intj=0;j<chessArray.length;j++){if(chessArray[i]......
  • C#使用随机数生成元素不重复的数组
    通过for与while的嵌套做了一个排除相同数字的审查机制,如果生成了数组中已有的数字就重新生成一个数字,继续循环排查,直到生成的数字是数组中不存在的数字数组长度不能超过随机数范围否则会死循环usingSystem;namespacenotRepeat{classProgram{staticvo......
  • 13-基础SQL-DQL(数据查询语言)-执行顺序(编写顺序和执行顺序)
    DQL-介绍(常用)DQL英文全称是DataQueryLanguage(数据查询语言),数据查询语言用来查询数据库中表的记录查询关键字:SELECTDQL-语法DQL-语法(编写顺序和执行顺序) 案例:创建一个emp员工表,添加一些员工数据CREATETABLEemp(idintcomment"编号",worknovarchar(10......
  • 实验2 C语言分支与循环基础应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN24658intmain(){9intnumber;10inti;11srand(time(0));12for(i=0;i<N;++i){13nu......