亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言實現添加和讀取配置文件函數的操作方法

2020-02-24 14:31:14
字體:
來源:轉載
供稿:網友

通常由函數傳遞的參數具有配置文件的路徑,但是對于小編而言,我認為在某些情況下,參數流入更加重要,讀取、添加、刪除和修改配置文件的功能都是基于流程參數實現的。
"oper_config.h"

?

#ifndef OPER_CONFIG_H_
#define OPER_CONFIG_H_
#define MAX_LINE_LEN 210
char *read_config(FILE *fp, char *key);
int add_config(FILE *fp, char *key, char *value);
#endif


"oper_config.c"

?

?

?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "oper_config.h"
static int check_key(char *line, char *key);
static char *get_value(char *line);
// fp 需要以讀的方式得到
char *
read_config(FILE *fp, char *key)
{
?char line[MAX_LINE_LEN] = {'/0'};
?char *value = NULL;
?int ret;
?while(fgets( line, sizeof(line), fp) != NULL)
?{
??ret = check_key(line, key);
??if(ret == -1)
??{
???continue;
??}
??else
??{
???value = get_value(line);
???if(value == NULL)
???{
????del_config(fp, key);
????return NULL;
???}
???else
???{
????return value;
???}
??}
?}/* while */
?return NULL;
}
static int
check_key(char *line, char *key)
{
?char *k_start, *k_end;??// 指示 key 在 line 中的起始和結束位置
?int line_len;
?line_len = strlen(line);
?if(line_len < 3)
?{
??return(-1);
?}
?else
?{
??k_start = &line[0];
??while(((*k_start == ' ') || (*k_start == '/t'))
????&& ( k_start <= &line[line_len - 1]))
??{
???k_start ++;
??}
??if(*k_start == '#')
??{
???return(-1);
??}
??k_end = strchr(line, '=');
??if(k_end == NULL)
??{
???return(-1);
??}
??k_end --;
??while(((*k_end == ' ') || (*k_end == '/t'))
????&& (k_end >= k_start))
??{
???k_end --;
??}
??if((*k_end == ' ') || (*k_end == '/t'))
??{
???return(-1);
??}
??if(strncmp(key, k_start, k_end-k_start + 1) != 0)
??{
???return(-1);
??}
?}
?return(0);
}/* check_key() */
static char*
get_value(char *line)
{
?char *v_start, *v_end;??// 指示 value 在 line 中的起始和結束位置
?char *value = NULL;
?int line_len;
?int val_len;
?line_len = strlen(line);
?v_start = strchr(line, '=');?// 已經在 check_key 中檢驗過'='的存在
?v_start ++;
?while(((*v_start == ' ') || (*v_start == '/t'))
???&& (v_start <= &line[line_len - 1]))
?{
??v_start ++;
?}
?v_end = &line[line_len - 1];
?if(((*v_end == ' ') || (*v_end == '/t')
???|| (*v_end == '/n')
???|| (*v_end == '/r'))
???&& (v_end > v_start))
?{
??v_end --;
?}
?if((*v_end == ' ') || (*v_end == '/t')
???|| (*v_end == '/n')
???|| (*v_end == '/r'))
?{
??return NULL;
?}
?val_len = v_end - v_start + 1;
?value = (char *)malloc((val_len + 1) * sizeof(char));
?if(value == NULL)
?{
??printf("malloc failed./n");
??return NULL;
?}
?strncpy(value, v_start, val_len);
?value[val_len] = '/0';
?return value;
}/* get_value() */
// fp 需要以添加的方式得到
int
add_config(FILE *fp, char *key, char *value)
{
?char *line = NULL;
?int key_len;
?int val_len;
?key_len = strlen(key);
?val_len = strlen(value);

?if( (fp == NULL) || (key == NULL) || (value == NULL))
?{
??return(-1);
?}
?line = (char *)malloc((key_len + val_len + 5) * sizeof(char));
?if(line == NULL)
?{
??printf("malloc failed./n");
??return(-1);
?}
?else
?{
??strncpy(line, key, key_len);
??line[key_len] = ' ';
??line[key_len + 1] = '=';
??line[key_len + 2] = ' ';
??line[key_len + 3] = '/0';
??strncat(line, value, val_len);
??line[key_len + val_len + 3] = '/n';
??line[key_len + val_len + 4] = '/0';
??if(fputs(line, fp) == EOF)
??{
???return(-1);
??}
?}
?free(line);
?return(0);
}/* add_config() */
?


說明:
1)?配置文件的數據格式? key = value
2) 支持 '#' 開頭注釋
3) key, value 前后可有空格, tab.

以上就是武林技術頻道小編給大家述說的C語言實現添加和讀取配置文件函數的操作方法,如果有筒靴們感興趣,可以多多關注武林技術頻道學習更多的知識。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产激情久久久久| 久久精品国产久精国产一老狼| 欧美国产日产韩国视频| 国产成人涩涩涩视频在线观看| 久久久久久久国产| 亚洲免费视频网站| 欧美激情a在线| www.日本久久久久com.| 欧美精品久久久久久久久久| 久久精品这里热有精品| 日韩一区二区av| 国产精品久久国产精品99gif| 色樱桃影院亚洲精品影院| 欧美日韩激情视频8区| 欧美激情免费在线| 亚洲第一区在线观看| 精品视频www| 亚洲最大福利视频网| 亚洲欧美国产日韩天堂区| 日本久久精品视频| 国产成人精品av在线| www.久久撸.com| 日韩资源在线观看| 日韩电影中文字幕在线观看| 亚洲精美色品网站| 中文字幕亚洲欧美日韩在线不卡| 免费91在线视频| 日韩性xxxx爱| www.99久久热国产日韩欧美.com| 国产精品成人一区| 久久国产精品偷| 欧美高清一级大片| 亚洲国产精品一区二区三区| 亚洲自拍偷拍视频| 色999日韩欧美国产| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲欧美在线看| 欧美性生交xxxxxdddd| 亚洲国产精品悠悠久久琪琪| 国产在线精品播放| 亚洲风情亚aⅴ在线发布| 日韩国产精品亚洲а∨天堂免| 日韩免费在线视频| 久久精品中文字幕电影| 日韩在线视频观看正片免费网站| 亚洲人成在线观看| 亚洲r级在线观看| 国产精品久久久久久亚洲调教| 91在线免费视频| 538国产精品一区二区在线| 精品久久久一区| 97视频网站入口| 中文字幕久精品免费视频| 国模视频一区二区三区| 日韩欧美国产中文字幕| 日韩欧美aⅴ综合网站发布| 日韩在线视频国产| 第一福利永久视频精品| 欧美在线视频一区二区| 亚洲自拍偷拍色片视频| 亚洲国产精品免费| 黄色成人在线播放| 欧美一级视频一区二区| 亚洲精品久久久久久久久| 538国产精品一区二区免费视频| 亚洲美女又黄又爽在线观看| 亚洲精品一区中文字幕乱码| 亚洲国产精品女人久久久| 在线日韩中文字幕| 精品呦交小u女在线| 一区二区三区四区视频| www国产精品视频| 国产主播精品在线| 久久久91精品国产| 91精品久久久久久久久中文字幕| 久久久影视精品| 456亚洲影院| 亚洲精品中文字幕女同| 成人免费看黄网站| 日韩中文在线中文网三级| 91美女高潮出水| 91精品综合久久久久久五月天| 亚洲精品97久久| 国内精品久久久久伊人av| 国产亚洲综合久久| 国产精品91一区| 日本aⅴ大伊香蕉精品视频| 欧美一级淫片播放口| 亚洲综合社区网| 亚洲国产毛片完整版| 92看片淫黄大片看国产片| 日韩经典中文字幕| 中文字幕精品www乱入免费视频| 久久福利视频网| 欧美疯狂xxxx大交乱88av| 久久激情视频久久| 欧美国产日韩免费| 97av视频在线| www.日韩av.com| 日本伊人精品一区二区三区介绍| 亚洲qvod图片区电影| 欧美日韩成人在线播放| 欧美激情va永久在线播放| 欧美一级bbbbb性bbbb喷潮片| 国产精品第10页| 欧日韩不卡在线视频| 狠狠躁夜夜躁人人躁婷婷91| 亚洲欧美日韩国产成人| 成人信息集中地欧美| 性色av一区二区三区红粉影视| 91精品国产色综合久久不卡98| 色青青草原桃花久久综合| 亚洲国产精品va| 欧美与黑人午夜性猛交久久久| 国产一区二区三区三区在线观看| 欧美在线精品免播放器视频| 亚洲日韩第一页| 精品久久久久久久久久久久久久| 久久久久亚洲精品成人网小说| 欧美国产精品人人做人人爱| 国产精品免费久久久久久| 日韩黄色在线免费观看| 亚洲黄页网在线观看| 91亚洲精品久久久久久久久久久久| 美日韩在线视频| 欧美视频一二三| 日韩久久精品成人| 久久精品99国产精品酒店日本| 日韩精品一区二区视频| 国产99在线|中文| 午夜美女久久久久爽久久| 久久久精品欧美| xvideos亚洲| 久久久久久久国产| 欧美久久精品午夜青青大伊人| 日韩在线观看免费高清完整版| 欧美大片网站在线观看| 日韩欧美a级成人黄色| 亚洲第一av网站| 91精品国产91久久久久| 欧美日韩成人免费| 97国产精品人人爽人人做| 黄色精品一区二区| 久久久久久一区二区三区| 日韩av大片在线| 久久免费视频在线| 久久网福利资源网站| 国产日韩在线精品av| 欧美成人性生活| 久久久国产精品一区| 国产成人激情小视频| 性亚洲最疯狂xxxx高清| 亚洲综合精品一区二区| 国产精品久久久久9999| 国产精品久久久久久五月尺| 国产精品91一区| 国产成人在线亚洲欧美| 国产亚洲xxx| 国产91精品在线播放| 欧美激情喷水视频| 精品一区二区三区电影| 91九色视频在线| 中文字幕一区日韩电影| 亚洲一区二区久久久久久|