读取环境变量并利进行文件的解析
2011-04-25 10:43
330 查看
同样以触摸屏的适配器tslib中的函数进行描述,如何从当前的环境变量中读取一个环境变量,并利进行文件的解析,
下面先对几个程序看几个将要用到的函数:
FILE * fopen(const char * path,const char * mode);
函数功能: 打开一个文件
函数原型:FILE * fopen(const char * path,const char * mode);
相关函数:open,fclose,fopen_s[1] ,_wfopen
所需库: <stdio.h>
返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
(参考百度百科)
char *strdup(char *s);
功能:复制字符串s
说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。
char *strsep(char **stringp, const char *delim);
功能:分解字符串为一组字符串。
strcasecmp(忽略大小写比较字符串)
相关函数 bcmp,memcmp,strcmp,strcoll,strncmp
表头文件 #include<string.h>
定义函数 int strcasecmp (const char *s1, const char *s2);
函数说明 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。
返回值 若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。
下面先对几个程序看几个将要用到的函数:
FILE * fopen(const char * path,const char * mode);
函数功能: 打开一个文件
函数原型:FILE * fopen(const char * path,const char * mode);
相关函数:open,fclose,fopen_s[1] ,_wfopen
所需库: <stdio.h>
返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
(参考百度百科)
char *strdup(char *s);
功能:复制字符串s
说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。
char *strsep(char **stringp, const char *delim);
功能:分解字符串为一组字符串。
strcasecmp(忽略大小写比较字符串)
相关函数 bcmp,memcmp,strcmp,strcoll,strncmp
表头文件 #include<string.h>
定义函数 int strcasecmp (const char *s1, const char *s2);
函数说明 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。
返回值 若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。
int ts_config(struct tsdev *ts) { char buf[BUF_SIZE], *p; FILE *f; int line = 0; int ret = 0; char *conffile; if( (conffile = getenv("TSLIB_CONFFILE")) == NULL) { conffile = strdup (TS_CONF); } f = fopen(conffile, "r"); if (!f) { perror("Couldnt open tslib config file"); return -1; } buf[BUF_SIZE - 2] = '\0'; while ((p = fgets(buf, BUF_SIZE, f)) != NULL) { char *e; char *tok; char *module_name; line++; /* Chomp */ e = strchr(p, '\n'); if (e) { *e = '\0'; } /* Did we read a whole line? */ if (buf[BUF_SIZE - 2] != '\0') { ts_error("%s: line %d too long\n", conffile, line); break; } tok = strsep(&p, " \t"); /* Ignore comments or blank lines. * Note: strsep modifies p (see man strsep) */ if (p==NULL || *tok == '#') continue; /* Search for the option. */ if (strcasecmp(tok, "module") == 0) { module_name = strsep(&p, " \t"); ret = ts_load_module(ts, module_name, p); } else if (strcasecmp(tok, "module_raw") == 0) { module_name = strsep(&p, " \t"); ret = ts_load_module_raw(ts, module_name, p); } else { ts_error("%s: Unrecognised option %s:%d:%s\n", conffile, line, tok); break; } if (ret != 0) { ts_error("Couldnt load module %s\n", module_name); break; } } if (ts->list_raw == NULL) { ts_error("No raw modules loaded.\n"); ret = -1; } fclose(f); return ret; }
相关文章推荐
- 读取环境变量并利进行文件的解析
- 手写从配置文件中读取信息并进行解析的工具类
- Linux如何修改环境变量PATH,以及系统登录时读取文件的顺序
- tslib的环境变量、配置文件等进行简要的分析 转
- linux添加环境变量对/etc/profile文件进行修改过后导致命令用不了
- linux读取文件中的一行,解析字符串并赋值给变量
- java 解析jar 文件,读取并进行调用
- 论Docker容器中的Nginx配置文件如何读取系统/容器的环境变量
- linux添加环境变量对/etc/profile文件进行修改过后导致命令用不了
- MFC环境下搭建OpenGL框架并进行数据文件读取以及模型绘制的注意事项
- QTP 解析外部的XML的环境变量文件
- Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell
- 2017六月末之Android开发之ProgressDialog读取文件进度进行解析
- 系统文件路径解析及环境变量一览(整合备用)
- Lucene4.2源码解析之fdt和fdx文件的读写——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压
- 基于android中读取assets目录下a.txt文件并进行解析的深入分析
- Lucene4.2源码解析之fdt和fdx文件的读写(续)——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压
- android中需要读取assets目录下a.txt文件并进行解析
- 用java读取解析一个含有变量的配置文件
- jmeter之读取环境变量中的配置文件