📄 readfile.c
字号:
/************************************************************************************
*description: 用c语言实现读取配置文件
*author: bolin.gong
**********************************************************************************/
#include <stdio.h>
#include <string.h>
#include <assert.h>
#define CONFIG_LINE_SIZE? ?? ?255
/*
** legal format of configure file entry
**
** key = value<\n>
*/
int f_read_config(FILE *fp, const char * str, char *val, size_t val_len) {
? ? ? ? char buffer[CONFIG_LINE_SIZE + 1];
? ? ? ? char *ptr;
? ? ? ? size_t buflen;
? ? ? ? size_t len;
? ? ? ? assert(fp != NULL);
? ? ? ? assert(str != NULL);
? ? ? ? assert(val != NULL);
? ? ? ? while (!feof(fp)) {
? ? ? ? ? ? ? ? if (fgets(buffer, sizeof(buffer), fp) == NULL) {
? ? ? ? ? ? ? ? ? ? ? ? if (ferror(fp)) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return -1; /* error: file io error */
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break; /* end of file */
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? buflen = strlen(buffer) - 1;
? ? ? ? ? ? ? ? if (buffer[buflen] != '\n') {
? ? ? ? ? ? ? ? ? ? ? ? return -2; /* error: line size too small */
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? buffer[buflen] = '\0';
? ? ? ? ? ? ? ? len = strlen(str);
? ? ? ? ? ? ? ? if (len + 3 >= buflen) {
? ? ? ? ? ? ? ? ? ? ? ? return -3; /* error: invalid format */
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ptr = buffer;
? ? ? ? ? ? ? ? if (strncmp(ptr, str, len) == 0) {
? ? ? ? ? ? ? ? ? ? ? ? ptr += len;
? ? ? ? ? ? ? ? ? ? ? ? if (strncmp(ptr, " = ", 3) != 0) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return -3; /* error: invalid format */
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ptr += 3;
? ? ? ? ? ? ? ? ? ? ? ? if (strlen(ptr) > val_len) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return -4; /* error: value buffer too small */
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? strncpy(val, ptr, val_len);
? ? ? ? ? ? ? ? ? ? ? ? return 1; /* found */
? ? ? ? ? ? ? ? }
? ? ? ? }
? ? return 0; /* not found */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -