读取与创建配置文件
来源:互联网 发布:网络播放量排行榜2016 编辑:程序博客网 时间:2024/06/09 16:45
直接上代码吧,读取配置文件代码如下:
#include <stdio.h>#include <string.h>#include <malloc.h>#define THE_TEST_FILE "/test/file/test.conf" int main(){ FILE *f; char buf[100], *pos; int line = 0;char name[32]={0};//定义并初始化数组char parameter1[32]={0};char parameter1_sizeof[32]={0};char *parameter3;//定义指针 f = fopen(THE_TEST_FILE, "r");//打开文件 while (fgets(buf, sizeof(buf), f)) //分别读取文件的每一行 { line++;//记录读到哪一行 if (buf[0] == '#')//遇到#,跳出,准备读下一行 continue; pos = buf;//pos指向每一行的数据的首地址 while (*pos != '\0') //遇到结束符或回车符,则跳出 { if(*pos == '\n') { *pos = '\0'; break; } pos++; } if (buf[0] == '\0') continue; pos = strchr(buf, '=');//pos指针定位到=这个位置 if (pos == NULL) { printf("Line %d: invalid line '%s'", line, buf); continue; } *pos = '\0';//将=字符替换为\0 pos++;//pos指向=后面一字符的位置 if (strcmp(buf, "name") == 0) { strcpy(name, pos);printf("line %d: name = %s\n",line,name); } if (strcmp(buf, "parameter1") == 0) {int strlen_pos = (int)strlen(pos)+1; strncpy(parameter1, pos, strlen_pos);//指针指向内容长度用strlen,printf("line %d: strlen=%d parameter1 = %s \n",line,strlen_pos,parameter1);printf("line %d: parameter1 = %s strlen=%d \n",line,parameter1,strlen_pos);//奇怪????int sizeof_pos = (int)sizeof(pos);strncpy(parameter1_sizeof, pos, sizeof(pos));//sizeof返回的是指针的大小,所以parameter1_sizeof并没有打印全printf("line %d: sizeof_pos=%d parameter1_sizeof = %s\n",line,sizeof_pos,parameter1_sizeof); } if (strcmp(buf, "parameter3") == 0) {parameter3=(char *)malloc(strlen(pos));//采用动态分配指针strncpy(parameter3, pos, strlen(pos));printf("parameter3 = %s\n",parameter3); } }free(parameter3);//free和fclose一定要记得fclose(f);return 0;}
其中test.conf文件如下:
name=testname0000parameter1=test_one1111#parameter2=test_two2222parameter3=test_three3333输出结果如下:
line 1: name = testname0000 ine 2: strlen=14 parameter1 = test_one1111 strlen=14 ameter1 = test_one1111line 2: sizeof_pos=8 parameter1_sizeof = test_oneparameter3 = test_three3333这一句printf("line %d: parameter1 = %s strlen=%d \n",line,parameter1,strlen_pos);打印结果很奇怪,为什么呢?暂时搞不懂。
那接下来上创建配置文件的代码如下:
#include <stdio.h>#include <string.h>#include <malloc.h>#define THE_WRITE_TEST_FILE "/test/file/write_test.conf" int main(){ FILE *f; f = fopen(THE_WRITE_TEST_FILE, "w+");//打开文件 fprintf(f, "write_test1=test_one\n");fprintf(f, "#write_test2=test_two\n");fprintf(f, "write_test3=test_three\n");fprintf(f, "write_test4=test_four\n");fclose(f);return 0;}输出的write_test.conf文件如下:
write_test1=test_one#write_test2=test_twowrite_test3=test_threewrite_test4=test_four创建文件比读取还是简单多了。
0 0
- 读取与创建配置文件
- WPF 创建 读取配置文件
- c#配置文件INI的创建、写入与读取
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- java存储与读取配置文件
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- C# 配置文件读取与修改
- 如何在window上把你的项目提交到github
- 用Ant实现Java项目的自动构建和部署
- lucene实战
- Java中的回车换行符/n /r /t
- C random C ++rand函数应用
- 读取与创建配置文件
- iOS正则表达式
- Activity的启动和创建
- (迟到的博客,始终是一个过程)Linux/Unix环境下计算C程序运行时间
- mongodb的操作类,实现一写多读分离
- 私人成员派生类
- C++预处理指令
- Objective-C----内存管理--点语法
- CSDN博客积分规则