用C语言写一个数据由系统启动时通过配置文件读取
时间: 2023-10-15 19:06:57 浏览: 48
好的,这里提供一个简单的实现函数,可以根据需要进行修改:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONFIG_SIZE 1024
#define MAX_LINE_SIZE 1024
// 配置数据结构
typedef struct {
char key[50];
char value[50];
} ConfigData;
// 读取配置文件
void load_config(const char *filename, ConfigData *config, int *config_size) {
FILE *fp;
char line[MAX_LINE_SIZE];
char *key, *value;
int i = 0;
fp = fopen(filename, "r");
if (fp == NULL) {
fprintf(stderr, "Failed to open file: %s\n", filename);
exit(1);
}
while (fgets(line, MAX_LINE_SIZE, fp) != NULL) {
if (line[0] == '#') {
// 注释行,忽略
continue;
}
key = strtok(line, "=\r\n");
value = strtok(NULL, "=\r\n");
if (key != NULL && value != NULL) {
// 存储键值对
strncpy(config[i].key, key, sizeof(config[i].key));
strncpy(config[i].value, value, sizeof(config[i].value));
i++;
}
if (i >= MAX_CONFIG_SIZE) {
fprintf(stderr, "Exceeded maximum config size: %d\n", MAX_CONFIG_SIZE);
exit(1);
}
}
fclose(fp);
*config_size = i;
}
int main() {
ConfigData config[MAX_CONFIG_SIZE];
int config_size = 0;
int i;
load_config("config.txt", config, &config_size);
for (i = 0; i < config_size; i++) {
printf("%s = %s\n", config[i].key, config[i].value);
}
return 0;
}
```
这个实现函数定义了一个 `ConfigData` 结构体,用于存储每个键值对的数据。在 `load_config` 函数中,打开配置文件,逐行读取文件内容,并使用 `strtok` 函数解析每一行的键值对,将其存储到 `ConfigData` 数组中。
在主函数中,调用 `load_config` 函数读取配置文件,并遍历输出读取到的键值对。
需要注意的是,程序中定义了一个 `MAX_CONFIG_SIZE` 常量,表示最大的配置文件大小,如果读取到的配置文件大小超过了这个值,程序会报错并退出。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)