功能:将分隔符变为\0",从而分解字符串。
1.函数原型:char *strtok(char *str, const char *delim);
2.头文件: #include <string.h>
3.参数:
str:第一次使用时,填写字符串的首地址;第二次使用时,填写NULL;
delim:分隔符集合;
4.返回值:返回字符串的首地址,如果没有标志位,则返回NULL。
5.busccu.conf里的内容如下:
#ccu_1_ip
ccu_1_ip=10.20.112.31
#ccu_2_ip
ccu_2_ip=10.20.112.32
#ccu_port
ccu_port=55055
#obu_port
obu_port=57077
6.代码示例:
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define CONFIG_PATH "/home/user/busccu.conf"
int main(int argc, char const *argv[])
{
FILE *fp = NULL;
char tmp[128] = {0};
char *tmp1 = NULL;
char ccu_1_ip[20] = {0};
char ccu_2_ip[20] = {0};
int ccu_port = 0;
int obu_port = 0;
fp = fopen(CONFIG_PATH, "r");
if (!fp)
{
perror("fail to fopen busccu.conf");
return -1;
}
while (fgets(tmp, sizeof(tmp), fp))
{
if (tmp[0] == '#')
continue;
tmp1 = strtok(tmp, "=");
if (!strcmp(tmp1, "ccu_1_ip"))
{
tmp1 = strtok(NULL, "=");
if (tmp1)
strcpy(ccu_1_ip, tmp1);
}
if (!strcmp(tmp1, "ccu_2_ip"))
{
tmp1 = strtok(NULL, "=");
if (tmp1)
strcpy(ccu_2_ip, tmp1);
}
if (!strcmp(tmp1, "ccu_port"))
{
tmp1 = strtok(NULL, "=");
if (tmp1)
ccu_port = atoi(tmp1);
}
if (!strcmp(tmp1, "obu_port"))
{
tmp1 = strtok(NULL, "=");
if (tmp1)
obu_port = atoi(tmp1);
}
}
printf("ccu_1_ip:%s ccu_2_ip:%s ccu_port:%d obu_port:%d\n", ccu_1_ip, ccu_2_ip, ccu_port, obu_port);
fclose(fp);
return 0;
}