在C语言中使用外部文件里的参数
来源:互联网 发布:mac book air截图 编辑:程序博客网 时间:2024/05/21 10:37
有时候,我们的程序需要一些在可以由用户修改的参数。
这些参数,通常放在一个外部文件里,典型的就是.ini格式的初始化类型文件。
要使用外部文件里定义的参数,只需要我们使用文件读写的方法,把这些文件里的参数读给程序里的变量就行了。
但外部文件,为了方便用户修改,总要加入一些描述信息,如何跳过这些描述信息,只将有用的信息读入我们的程序中呢?
这时就需要用到几个很有用的字符串处理函数:
(点击上面的函数名,可以查看使用帮助)
下面是一个例程:(注意是按行读取外部参数文件的)
外参文件: parameter.ini
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;1号同学的信息
name1 = zhang
age1 = 23
No1 = 10001
;2号同学的信息
name2 = Li
age2 = 25
No2 = 10002
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
处理"parameter.ini"的C程序如下:
char * comment,
* buf;
while( (ch = fgetc(fp)) != EOF ) {
if(ch == ';' || ch == ':' || ch == '/n') fgets(comment, 256, fp) ; //忽略空行或有注释符的一行,对读取的一行不做任何操作
else {
fseek(fp, -1L, SEEK_CUR) ; // 回到给ch赋值的那个字符
strncpy(comment, "", 256) ; strncpy(buf, "", 32) ; // 初始化为空
fgets(comment, 256, fp) ; // 读取外参文件的一行数据
if(strnicmp(comment, "name", 3) == 0) { // 如果该行是name开头
pos = strcspn(comment, "=") ; // 找name后的等号的位置
strncpy(buf, comment+3, pos-3) ; // 找到name后的序号 赋给buf
k = atoi(buf) ; // 将字符串处理成整型
strncpy(name[k] comment+pos+1, 32) ; // 把=后面的值读到name参数中
}else if(strnicmp(comment, "age", 3) == 0) { // "age"から始まる行を探す(バンディング対策時の上限
pos = strcspn(comment, "=") ; // "="の位置を探す
strncpy(buf, comment+3, pos-3) ; // "+3/-3"は"age"の分
ak = atoi(buf) ; //
strncpy(buf, comment+pos+1, 32) ; // "+1"はbuf内に含まれる"="の分
age[ak] = atol(buf) ;
}else if(strnicmp(comment, "No", 2) == 0) {
pos = strcspn(comment, "=") ; // "="の位置を探す
strncpy(buf, comment+2, pos-2) ; // "+2/-2"は"max"の分
k = atoi(buf) ; // k番目のドット出現率上限値の読み込み
strncpy(buf, comment+pos+1, 32) ; // "+1"はbuf内に含まれる"="の分
no[k] = atol(buf) ;
}
}
}
- 在C语言中使用外部文件里的参数
- C语言中static关键词使用在函数外部和内部的疑惑
- C语言中可变参数的使用
- C语言中可变参数的使用
- C语言中可变参数的使用
- 在C语言头文件里“定义”全局变量的方法
- C 语言snprintf 在VS里的使用
- C语言里的可变参数
- C语言里的可变参数
- 如何在Jmeter中使用外部的java文件
- 如何在Jmeter中使用外部的java文件
- 如何在Jmeter中使用外部的java文件
- 在u-boot C语言文件中使用汇编文件中定义的变量
- C语言在VS里使用 inline
- 在spring中使用外部属性文件
- c语言中全局变量在多个文件中使用
- c语言中全局变量在多个文件中使用
- 在C语言中编写支持可变参数的函数
- 从GridView 中取值的方法汇总
- Java 多种文件读写方式
- Flex中如何通过horizontalGap样式,设置TabBar控件各个Tab间空格间距
- 精通DirectX 3D 字体与文本显示
- window窗体下的 验证码
- 在C语言中使用外部文件里的参数
- 核对表:需求
- 字符串对称处理
- jsp 直接调用 spring bean
- 浅谈GCC预编译头技术 (转)
- Sleep和WaitForSingleObject ,WaitForMultipleObjects
- 十一月六日 杂记
- 高级网管网上培训班即将开课
- 用BusyBox制作根文件系统