#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <linux/kernel.h>
static unsigned long get_file_size(const char *path)
{
struct stat statbuff;
if(stat(path, &statbuff) >= 0){
return statbuff.st_size;
}
return -1;
}
static unsigned int print_network_name(void)
{
int fd = -1;
int size = 0;
int i = 0;
char buf[100];
char strBuf[100];
char *p;
unsigned long fileSize = get_file_size("./Sets.conf");
char *buffer = (char *)malloc(fileSize + 1);
char *tmpBuf = (char *)malloc(fileSize + 1);
if(NULL == buffer || NULL == tmpBuf)
{
printf("%s malloc error \n", __func__);
return -1;
}
fd = open("./Sets.conf", O_RDONLY);
if(-1 == fd)
{
printf("%s open error \n", __func__);
return -1;
}
size = read(fd, buffer, fileSize);
if(size != fileSize)
{
printf("%s read file len error \n", __func__);
close(fd);
return -1;
}
close(fd);
p = strstr(buffer, "NetworkDevice");
memcpy(tmpBuf, p, (unsigned int)((p - buffer)/sizeof(char)));
p = strstr(tmpBuf, "DeviceName");
p += sizeof("DeviceName");
while(*p != '\n')
{
buf[i] = *p;
i++;
p++;
}
buf[i] = '\0';
free(buffer);
free(tmpBuf);
memset(strBuf, 0xff, 100);
sprintf(strBuf, "NetworkName : %s", buf);
printf("%s \n", strBuf);
return 0;
}
void main(void)
{
print_network_name(();
}
查找Sets.conf中[NetworkDevice]字段下 DeviceName的赋值。
[NetworkDevice]
ConnectedNetwork=DHCP
DeviceName=eth0
读取配置文件示例

本文展示了一个C语言程序示例,该程序用于从名为Sets.conf的配置文件中读取特定字段“NetworkDevice”下的“DeviceName”的值,并打印出来。程序首先获取文件大小,然后读取文件内容并解析所需的字段。

被折叠的 条评论
为什么被折叠?



