关于从文件读取配置信息

在我编写项目的时候,有时候需要遇到配置项修改的问题,那么这个时候设置一个文件来记录配置项是极好的。

例如配置项是这样的:
ip=192.168.1
head=1
tail=100
port=12345
master_ip=192.168.1.154

这个时候呢,就需要编写一个函数来操作文件并且获取文件信息了,那么接下来呢,就是实现一个对文件操作的函数。

实现文件读取的函数是这次操作的主体部分。

文件读取代码:
int read_file(char *filename, char *path, char *arr) {
    FILE *fp;
    if ((fp = fopen(filename, "r")) == NULL) {
        perror("client fopen error!");
        exit(0);
    }
    size_t len = 0;
    char *line = NULL;
    ssize_t read;
    int path_len = strlen(path);
    while ((read = getline(&line, &len, fp)) != -1) {
        if (strstr(line, path) == NULL) continue;
        if (line[path_len] != '=') continue;
        
        strncpy(arr, &line[path_len + 1], read - path_len - 1);
        int addlen = strlen(arr);
        arr[addlen - 1] = '\0';
        break;
    }
    fclose(fp);
    return 0;

}

首先传入参数是: 文件地址, 查找的参数, 传出参数。

使用条件

linux标准C中使用条件:
#define _GNU_SOURCE
#include <stdio.h>
函数声明:ssize_t getline(char **lineptr, size_t *n, FILE *stream);

返回值

成功:返回读取的字节数。
失败:返回-1。
参数:

lineptr:指向存放该行字符的指针,如果是NULL,则有系统帮助malloc,请在使用完成后free释放。

n:如果是由系统malloc的指针,请填0

stream:文件描述符
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,596评论 19 139
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,797评论 0 9
  • 张总的那篇文章在朋友圈里一顿转。有赶超马云阿里上市的新闻热度的节奏。 里面的gp不少喊着要失业。不少创业者喊着要终...
    他乡寂寞刀阅读 3,318评论 1 1
  • 什么是Redis的主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节...
    莫小鹏阅读 3,587评论 0 1
  • 文人相轻,成语,出自三国·魏·曹丕《典论·论文》:“文人相轻,自古而然”。文人,指有文德的人;相轻,指互相轻视﹑鄙...
    柳若溪阅读 3,511评论 13 10