⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readfile.c

📁 主要用于系统在上电初始化过程中用与读取系统事先配置好的参数信息
💻 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 + -