C语言读写配置文件代码

合集下载

C语言读取写入ini配置文件的方法实现

C语言读取写入ini配置文件的方法实现

C语⾔读取写⼊ini配置⽂件的⽅法实现⽬录⼀、了解什么是INI⽂件?⼆、INI⽂件的格式三、解析上述⽂件四、测试如下⼀、了解什么是INI⽂件?ini ⽂件是Initialization File的缩写,即初始化⽂件,这是⽤来配置应⽤软件以实现不同⽤户的要求。

⼆、INI⽂件的格式INI⽂件由节、键、值组成。

⼀个简单的的INI⽂件例⼦如下:[Setting]INIT_FLAG=0;VOLUME=1;LANGUAGE=1;如上例⼦,[Setting]就是节,=号左边的值是键,=号右边的是值。

三、解析上述⽂件/*ini.h*/#ifndef INI_H#define INI_H#include <stdio.h>#include <string.h>int GetIniKeyString(char *title,char *key,char *filename,char *buf);int PutIniKeyString(char *title,char *key,char *val,char *filename);#endif /*INI_H*//*ini.c*/#include <stdio.h>#include <string.h>/** 函数名: GetIniKeyString* ⼊⼝参数: title* 配置⽂件中⼀组数据的标识* key* 这组数据中要读出的值的标识* filename* 要读取的⽂件路径* 返回值:找到需要查的值则返回正确结果 0* 否则返回-1*/int GetIniKeyString(char *title,char *key,char *filename,char *buf){FILE *fp;int flag = 0;char sTitle[64], *wTmp;char sLine[1024];sprintf(sTitle, "[%s]", title);if(NULL == (fp = fopen(filename, "r"))) {perror("fopen");return -1;}while (NULL != fgets(sLine, 1024, fp)) {// 这是注释⾏if (0 == strncmp("//", sLine, 2)) continue;if ('#' == sLine[0]) continue;wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, strlen(key))) { // 长度依⽂件读取的为准sLine[strlen(sLine) - 1] = '\0';fclose(fp);while(*(wTmp + 1) == ' '){wTmp++;}strcpy(buf,wTmp + 1);return 0;}} else {if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 长度依⽂件读取的为准flag = 1; // 找到标题位置}}}fclose(fp);return -1;}/** 函数名: PutIniKeyString* ⼊⼝参数: title* 配置⽂件中⼀组数据的标识* key* 这组数据中要读出的值的标识* val* 更改后的值* filename* 要读取的⽂件路径* 返回值:成功返回 0* 否则返回 -1*/int PutIniKeyString(char *title,char *key,char *val,char *filename){FILE *fpr, *fpw;int flag = 0;char sLine[1024], sTitle[32], *wTmp;sprintf(sTitle, "[%s]", title);if (NULL == (fpr = fopen(filename, "r")))return -1;// 读取原⽂件sprintf(sLine, "%s.tmp", filename);if (NULL == (fpw = fopen(sLine, "w")))return -1;// 写⼊临时⽂件while (NULL != fgets(sLine, 1024, fpr)) {if (2 != flag) { // 如果找到要修改的那⼀⾏,则不会执⾏内部的操作wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, strlen(key))) { // 长度依⽂件读取的为准flag = 2;// 更改值,⽅便写⼊⽂件sprintf(wTmp + 1, " %s\n", val);}} else {if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 长度依⽂件读取的为准flag = 1; // 找到标题位置}}}fputs(sLine, fpw); // 写⼊临时⽂件}fclose(fpr);fclose(fpw);sprintf(sLine, "%s.tmp", filename);return rename(sLine, filename);// 将临时⽂件更新到原⽂件}上述两个函数是简单的解析函数,因为ini⽂件有很多种解析⽅式,根据不同的需求解析也不同所以要进⾏修改⽐如我的注释符号是 “ ;”,所以我需要修改并且根据实际功能需求也可以进⾏进⼀步的封装四、测试如下ini样本⽂件/*test.ini*/[city]beijing = hello-beijingshanghai = hello-shanghai#information[study]highschool = xxxxuniversity = yyyytest.c程序/*test.c*/#include "ini.h"#include <stdio.h>int main(int argc, char const *argv[]){char buff[100];int ret;ret = GetIniKeyString("city","beijing","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);ret = GetIniKeyString("study","highschool","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);ret = PutIniKeyString("study","highschool","zzzz","./test.ini");printf("put ret:%d\n",ret);ret = GetIniKeyString("study","highschool","./test.ini",buff);printf("ret:%d,%s\n",ret,buff);return 0;}结果如下:ret:0,hello-beijingret:0,xxxxput ret:0ret:0,zzzz相应的test.ini的study段highschool项变成了zzzz.这⾥还要注意,section使⽤中⽂字符可能会⽆法识别!到此这篇关于C语⾔读取写⼊ini配置⽂件的⽅法实现的⽂章就介绍到这了,更多相关C语⾔读取写⼊ini 内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

C语言读写文件两种方式ASCII和二进制。

C语言读写文件两种方式ASCII和二进制。

C语⾔读写⽂件两种⽅式ASCII和⼆进制。

C语⾔读写⽂件有两种⽅式ASCII 和⼆进制。

现在举例说明:内存中的字符或字符串都是⽂本模式(unicode编码存储,统⼀长度,定长码,⽅便)内存中的其他变量都是以⼆进制编码存储程序的代码以⽂本模式ASCII码⽅式存储1.在windows系统中,⽂本模式下,⽂件以" \r\n"代表换⾏。

若以⽂本模式打开⽂件,并⽤fputs等函数写⼊换⾏符"\n"时,函数会⾃动在"\n"前⾯加上"\r"。

即实际写⼊⽂件的是"\r\n" 。

读取的时候⾃动去掉\r,将\n写⼊内存。

2.在类Unix/Linux系统中⽂本模式下,⽂件以"\n"代表换⾏。

所以Linux系统中在⽂本模式和⼆进制模式下并⽆区别。

注:Windows 采⽤ \r\n 是有原因的,Windows 采⽤了传统的英⽂打字机的模式。

想想看英⽂打字机是如何换⾏的呢?英⽂打字机是选择将⼩车退回⾄起点,这个过程称为回车(carriage return, CR),随后把⼩车调⾄下⼀⾏的位置,这个过程称为换⾏(line feed, LF),这样就完成了英⽂打字机中换⾏过程。

回车(CR)在计算机中使⽤ ASCII 为 13 的字符来表⽰,换⾏(LF)使⽤ASCII 为 10 的字符来表⽰。

这也就是 Windows 的换⾏采⽤ \r\n 来表⽰的原因。

3.当⽤⼆进制模式读取windows下代表换⾏的\r\n时,不能⾃动去掉\r,这样读⼊内存的数据多了⼀个‘\r’,造成跟在‘\r’后⾯的⼆进制位右移,读取必然会出错!4.如果在⽂件中读到0x1B,⽂本模式会认为这是⽂件结束符,也就是⼆进制模型不会对⽂件进⾏处理,⽽⽂本⽅式会按⼀定的⽅式对数据作相应的转换。

5.⽤⽂本模式写⽂件,读取时也要⽤⽂本模式,⼆进制模式同样。

C语言读取INI配置文件

C语言读取INI配置文件

C语言读取INI配置文件Ini.h#pragma once#include"afxTempl.h"class DLLPORT CIni{private:CString m_strFileName;public:CIni(CString strFileName) :m_strFileName(strFileName){}public://一般性操作:BOOL SetFileName(LPCTSTR lpFileName); //设置文件名CString GetFileName(void); //获得文件名BOOL SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue, bool bCreate = true); //设置键值,bCreate是指段名及键名未存在时,是否创建。

CString GetValue(LPCTSTR lpSection, LPCTSTR lpKey); //得到键值.BOOL DelSection(LPCTSTR strSection); //删除段名BOOL DelKey(LPCTSTR lpSection, LPCTSTR lpKey); //删除键名public://高级操作:int GetSections(CStringArray& arrSection); //枚举出全部的段名int GetKeyValues(CStringArray& arrKey, CStringArray& arrValue, LPCTSTR lpSection); //枚举出一段内的全部键名及值BOOL DelAllSections();};/*使用方法:CIni ini("c:\\a.ini");int n;/*获得值TRACE("%s",ini.GetValue("段1","键1"));*//*添加值ini.SetValue("自定义段","键1","值");ini.SetValue("自定义段2","键1","值",false);*//*枚举全部段名CStringArray arrSection;n=ini.GetSections(arrSection);for(int i=0;i<n;i++)TRACE("%s\n",arrSection[i]);*//*枚举全部键名及值CStringArray arrKey,arrValue;n=ini.GetKeyValues(arrKey,arrValue,"段1");for(int i=0;i<n;i++)TRACE("键:%s\n值:%s\n",arrKey[i],arrValue[i]); *//*删除键值ini.DelKey("段1","键1");*//*删除段ini.DelSection("段1");*//*删除全部ini.DelAllSections();*/Ini.cpp#include"StdAfx.h"#include"Ini.h"#define MAX_ALLSECTIONS 2048 //全部的段名#define MAX_SECTION 260 //一个段名长度#define MAX_ALLKEYS 6000 //全部的键名#define MAX_KEY 260 //一个键名长度BOOL CIni::SetFileName(LPCTSTR lpFileName){CFile file;CFileStatus status;if (!file.GetStatus(lpFileName, status))return TRUE;m_strFileName = lpFileName;return FALSE;}CString CIni::GetFileName(void){return m_strFileName;}BOOL CIni::SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue, bool bCreate) {TCHAR lpTemp[MAX_PATH] = { 0 };//以下if语句表示如果设置bCreate为false时,当没有这个键名时则返回TRUE(表示出错)//!*&*none-value*&!* 这是个垃圾字符没有特别意义,这样乱写是防止凑巧相同。

c语言 文件操作函数

c语言 文件操作函数

c语言文件操作函数C语言文件操作函数C语言文件操作函数是C语言提供的一种文件操作方式,可以通过这些函数来读取、写入和修改文件。

文件操作函数可以帮助我们完成很多与文件有关的任务,比如读取配置文件、保存用户数据等。

在本文中,将介绍C语言中常用的文件操作函数。

打开文件在C语言中,我们可以使用fopen()函数来打开一个文件。

该函数的原型如下:FILE *fopen(const char *filename, const char *mode);其中,filename表示要打开的文件名,mode表示打开文件的模式。

mode的取值如下:- "r":以只读方式打开文件- "w":以写方式打开文件,如果文件不存在,则创建该文件;如果文件已存在,则清空该文件- "a":以写方式打开文件,如果文件不存在,则创建该文件;如果文件已存在,则在文件末尾追加数据- "r+":以读写方式打开文件,文件必须存在- "w+":以读写方式打开文件,如果文件不存在,则创建该文件;如果文件已存在,则清空该文件- "a+":以读写方式打开文件,如果文件不存在,则创建该文件;如果文件已存在,则在文件末尾追加数据例如,我们可以使用以下代码来打开一个名为example.txt的文件:FILE *fp;fp = fopen("example.txt", "w+");if (fp == NULL) {printf("Open file failed!\n");}在打开文件之后,我们可以使用fclose()函数来关闭文件,释放文件资源。

例如:fclose(fp);读取文件在C语言中,我们可以使用fscanf()函数从文件中读取数据。

该函数的原型如下:int fscanf(FILE *stream, const char *format, ...);其中,stream表示要读取数据的文件,format表示数据的格式。

c语言的各种读写模式

c语言的各种读写模式

c语言的各种读写模式C语言的各种读写模式一、以只读模式打开文件在C语言中,可以通过以只读模式打开文件来读取文件的内容。

只读模式不允许对文件进行写操作,可以保证文件的内容不会被意外修改。

使用只读模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "r");if (file == NULL) {printf("无法打开文件\n");return 1;}// 读取文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以只读模式打开名为`file.txt`的文件。

如果文件打开失败,即文件不存在或无法访问,则会输出错误信息并返回。

如果文件成功打开,则可以在之后的代码中读取文件的内容。

二、以写入模式打开文件与只读模式相反,以写入模式打开文件允许对文件进行写操作。

使用写入模式打开文件时,如果文件不存在,则会创建一个新的文件;如果文件已存在,则会清空文件内容。

使用写入模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "w");if (file == NULL) {printf("无法打开文件\n");return 1;}// 写入文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以写入模式打开名为`file.txt`的文件。

如果文件打开失败,则会输出错误信息并返回。

如果文件成功打开,则可以在之后的代码中写入文件的内容。

三、以追加模式打开文件追加模式是一种特殊的写入模式,它不会清空文件内容,而是在文件末尾继续写入新的内容。

使用追加模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "a");if (file == NULL) {printf("无法打开文件\n");return 1;}// 写入文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以追加模式打开名为`file.txt`的文件。

C语言代码大全

C语言代码大全

C语言代码大全C语言是一种高级程序设计语言,广泛应用于计算机科学和软件开发领域。

它以其简洁、高效的特点而备受青睐。

本文将为您介绍一些常用的C语言代码,包括输入输出、流程控制、函数调用、数据结构等方面的代码示例。

一、输入输出1. 标准输入输出```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("您输入的数字是:%d\n", num);return 0;}```2. 文件读写```cint main() {FILE *file;char str[100];// 写入文件file = fopen("data.txt", "w");fprintf(file, "Hello, World!");fclose(file);// 读取文件file = fopen("data.txt", "r");fscanf(file, "%s", str);printf("从文件中读取的内容是:%s\n", str); fclose(file);return 0;}```二、流程控制1. 条件语句```cint main() {int num = 10;if (num > 0) {printf("该数字是正数。

\n"); } else if (num < 0) {printf("该数字是负数。

\n"); } else {printf("该数字是零。

\n"); }return 0;}```2. 循环语句```c#include <stdio.h>int main() {int num = 5;// while循环while (num > 0) {printf("当前数字:%d\n", num); num--;}// for循环for (int i = 0; i < 5; i++) {printf("当前数字:%d\n", i);}// do-while循环do {printf("当前数字:%d\n", num); num++;} while (num < 5);return 0;}```三、函数调用```c#include <stdio.h>int add(int a, int b) {return a + b;}int main() {int num1 = 5;int num2 = 3;int result = add(num1, num2);printf("两个数的和为:%d\n", result); return 0;}```四、数据结构1. 数组```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("数组元素:%d\n", arr[i]); }return 0;}```2. 结构体```c#include <stdio.h>struct Student {char name[20];int age;};int main() {struct Student stu1;strcpy(, "Tom");stu1.age = 18;printf("学生姓名:%s\n", ); printf("学生年龄:%d\n", stu1.age); return 0;}```以上只是C语言代码中的一小部分示例,C语言是一门非常庞大的编程语言,拥有众多的功能和特性。

c读取配置文件的方法

c读取配置文件的方法

c读取配置文件的方法在C语言中,读取配置文件是一项非常常见的任务。

配置文件通常包含了程序运行时需要的各种参数和设置,因此读取配置文件是程序启动时必须完成的任务之一。

本文将介绍如何使用C语言读取配置文件。

我们需要了解配置文件的格式。

配置文件通常是一个文本文件,其中包含了一系列的键值对。

每个键值对由一个键和一个值组成,中间用等号连接。

例如:```key1=value1key2=value2key3=value3```在C语言中,我们可以使用标准库中的fopen函数打开配置文件。

例如:```cFILE *fp = fopen("config.ini", "r");```这里我们打开了一个名为config.ini的文件,并以只读模式打开。

接下来,我们可以使用标准库中的fgets函数逐行读取配置文件。

例如:```cchar line[256];while (fgets(line, sizeof(line), fp)) {// 处理每一行}```这里我们定义了一个长度为256的字符数组line,然后使用fgets 函数逐行读取配置文件。

fgets函数的第一个参数是一个字符数组,用于存储读取到的行;第二个参数是字符数组的长度;第三个参数是文件指针,用于指定要读取的文件。

接下来,我们需要解析每一行的键值对。

我们可以使用标准库中的strtok函数将每一行按照等号分割成键和值。

例如:```cchar *key = strtok(line, "=");char *value = strtok(NULL, "=");```这里我们使用strtok函数将line按照等号分割成两个部分,分别是键和值。

strtok函数的第一个参数是要分割的字符串;第二个参数是分割符,这里是等号。

strtok函数会返回分割后的第一个部分,我们可以使用NULL作为第一个参数来获取分割后的第二个部分。

vc读写配置文件方法

vc读写配置文件方法

vc 用函数读写INI配置文件ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。

ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。

读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。

一、向ini文件中写入信息的函数1. 把信息写入系统的win.ini文件BOOL WriteProfileString(LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。

若为NULL,则删除整个节LPCTSTR lpString // 键的值,是一个以0结束的字符串。

若为NULL,则删除对应的键)2. 把信息写入自己定义的.ini文件BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 同上LPCTSTR lpKeyName, // 同上LPCTSTR lpString, // 同上LPCTSTR lpFileName // 要写入的文件的文件名。

若该ini文件与程序在同一个目录下,也可使用相对//路径,否则需要给出绝度路径。

)如:::WriteProfileString("Test","id","xym");//在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xym::WritePrivateProfileString("Test","id","xym","d:\\vc\\Ex1\\ex1.ini" );//在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xym//若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:::WritePrivateProfileString("Test","id","xym",".\\ex1.ini");需要注意的是,C系列的语言中,转义字符'\\'表示反斜线'\'。

c语言文件读写

c语言文件读写

c语言文件读写从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。

ASCII码文件可在屏幕上按字符显示。

二进制文件是按二进制的编码方式来存放文件的。

二进制文件虽然也可在屏幕上显示,但其内容无法读懂。

C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。

输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。

因此也把这种文件称作“流式文件”。

1、文件的打开与关闭文件在进行读写操作之前要先打开,使用完毕要关闭。

所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。

关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。

在C语言中,文件操作都是由库函数来完成的。

在本章内将介绍主要的文件操作函数。

在stdio.h文件中,有结构体类型FILE。

typeof struct{ short level; /*缓冲区“满”或“空”的程度*/unsigned flags; /*文件状态标志*/char fd; /*文件描述符*/unsigned char hold; /*如无缓冲区不读取字符*/short bsize; /*缓冲区的大小*/unsigned char *buffer; /*数据缓冲区的位置*/unsigned ar *curp; /*指针、当前的指向*/unsigned istemp; /*临时文件、指示器*/short token; /*用于有效性检查*/} FILE;可以定义文件类型数组,例如:FILE f[5];可以定义文件类型指针,例如:FILE *fp;——fp指向某一个文件的结构体变量。

如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,以实现对文件的访问。

1.1 文件的打开(fopen函数)fopen()函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,“文件指针名”必须是被说明为FILE 类型的指针变量;“文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求;“文件名”是字符串常量或字符串数组。

c读取配置文件的方法

c读取配置文件的方法

c读取配置文件的方法在C语言中读取配置文件是非常常见的操作,它可以方便地管理程序的一些参数和选项,让程序更加灵活和易于维护。

下面是一些常见的方法:1. 使用标准库函数fopen和fscanf这是最常见的方法之一,使用标准库函数fopen和fscanf来逐行读取配置文件中的内容。

具体实现步骤如下:a. 使用fopen打开配置文件,获取文件指针。

b. 使用fscanf读取每一行的内容,根据具体的配置格式进行解析。

c. 关闭文件指针。

示例代码:FILE *fp;char buf[1024];int value;fp = fopen('config.ini', 'r');if (fp == NULL){printf('Cannot open config file.');return -1;}while (fgets(buf, sizeof(buf), fp) != NULL){if (sscanf(buf, 'key=%d', &value) == 1){// 解析成功,使用读取到的值进行后续操作printf('value=%d', value);}}fclose(fp);2. 使用ini配置文件解析库ini配置文件解析库是一个专门用来解析ini配置文件的库,它能够快速、简单地读取和修改ini文件中的配置项。

具体实现步骤如下:a. 下载并安装ini解析库。

b. 使用ini_parse函数读取配置文件。

c. 使用ini_get函数获取配置项的值。

示例代码:#include 'ini.h'int handler(void* user, const char* section, const char* name,const char* value)if (strcmp(section, 'config') == 0 && strcmp(name, 'key') == 0){// 获取配置项的值int* pvalue = (int*)user;*pvalue = atoi(value);}return 1;}int main(){int value;if (ini_parse('config.ini', handler, &value) < 0){printf('Cannot open config file.');return -1;}printf('value=%d', value);return 0;3. 使用XML配置文件解析库XML配置文件解析库是一个专门用来解析XML格式的配置文件的库,它能够解析复杂的XML文件,并且提供了灵活的配置项操作方式。

C语言实现按行读写文件

C语言实现按行读写文件

C语言实现按行读写文件C语言提供了丰富的文件操作函数,可以很方便地实现按行读写文件的功能。

下面是一个简单的示例代码,可以实现按行读取一个文件,将其逐行写入另一个文件。

```c#include <stdio.h>#include <stdlib.h>#define MAX_LINE_LENGTH 100int maiFILE *input_file, *output_file;char input_filename[100], output_filename[100];char line[MAX_LINE_LENGTH];printf("请输入需要读取的文件名:");scanf("%s", input_filename);printf("请输入需要写入的文件名:");scanf("%s", output_filename);//打开输入文件input_file = fopen(input_filename, "r");if (input_file == NULL)printf("无法打开输入文件\n");return 1;}//打开输出文件output_file = fopen(output_filename, "w");if (output_file == NULL)printf("无法打开输出文件\n");fclose(input_file);return 1;}//按行读取输入文件,并写入输出文件while (fgets(line, MAX_LINE_LENGTH, input_file) != NULL) fputs(line, output_file);}//关闭文件fclose(input_file);fclose(output_file);printf("文件已成功写入\n");return 0;```这段代码使用了`fgets(`函数来逐行读取文件内容,`fputs(`函数来将每行内容写入文件。

C#文件读写详解

C#文件读写详解

C#读写文件总结一)文件目录操作函数和示例首先要熟悉.NET中处理文件和文件夹的操作。

File类和Directory类是其中最主要的两个类。

了解它们将对后面功能的实现提供很大的便利。

本节先对和文件系统相关的两个.NET类进行简要介绍。

System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间。

下面通过程序实例来介绍其主要属性和方法。

(1) 文件打开方法:File.Open ()该方法的声明如下:public static FileStream Open(string path,FileMode mode)下面的代码打开存放在c:\tempuploads目录下名称为newFile.txt文件,并在该文件中写入hello。

private void OpenFile(){FileStream.TextFile=File.Open(@"c:\tempuploads\newFile.txt",FileMode.Append); byte [] Info = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};TextFile.Write(Info,0,Info.Length);TextFile.Close();}(2) 文件创建方法:File.Create()该方法的声明如下:public static FileStream Create(string path;)下面的代码演示如何在c:\tempuploads下创建名为newFile.txt的文件。

由于File.Create方法默认向所有用户授予对新文件的完全读/写访问权限,所以文件是用读/写访问权限打开的,必须关闭后才能由其他应用程序打开。

C#config文件读写入门

C#config文件读写入门
C# App.config全攻略 读语句:
String str = ConfigurationManager.AppSettings["DemoKey"];
写语句:
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config1.Sections.Remove("BusinessSpaceConfiguration");
config1.Sections.Add("BusinessSpaceConfiguration", bsconfigData);
att.Value=ConnenctionString;
break;
}
}
//保存上面的修改
doc.Save(strFileName);
}
VS2005中读写配置文件
VS2003中对于应用程序配置文件(app.config或者web.config)只提供了读取的功能。而在VS2005中,对于配置文件的功能有了很大的加强。在VS2005中,对于应用程序配置文件的读写一般使用Configuration,ConfigurationManager两个类。ConfigurationManager类为客户应用程序提供了一个访问的功能。使用ConfigurationManager对象执行打开配置文件的操作后,将会返回一个Configuration的对象。通过程序实现读写配置文件的代码如下所示:
在appsettings后面的是子元素的key属性的值,例如appsettings["connenctionstring"],我们就是访问<add key="ConnenctionString" value="*" />这个子元素,它的返回值就是“*”,即value属性的值。

C#中读写INI配置文件

C#中读写INI配置文件

C#中读写INI配置文件
在作应用系统开发时,管理配置是必不可少的。

例如数据库服务器的配置、安装和更新配置等等。

由于Xm l的兴起,现在的配置文件大都是以xml文档来存储。

比如Visual 自身的配置文件Mashine.config,的配置文件Web.Config,包括我在介绍Rem oting中提到的配置文件,都是xm l的格式。

传统的配置文件ini已有被xml文件逐步代替的趋势,但对于简单的配置,ini文件还是有用武之地的。

ini文件其实就是一个文本文件,它有固定的格式,节Secti on的名字用[]括起来,然后换行说明key的值:
[section]
key=value
如数据库服务器配置文件:
DBServer.ini
[Server]
Nam e=localhost
[DB]
Nam e=NorthWind
using using using using
nam {
{
} }
Section参数、Key参数和IniFilePath不用再说,Value参数表明key的值,而这里的NoText 对应API函数的def参数,它的值由用户指定,是当在配置文件中没有找到具体的Value时,就用NoTex t的值来代替。

C#读写config配置文件

C#读写config配置文件

C#读写config配置⽂件⼀:使⽤ConfigurationManager①:添加System.configguration②:引⽤空间③:config配置⽂件配置节A:⾃定义配置B:数据源配置<addname="kyd"connectionString=“server=.;database=UFDATA_999_2017;user=sa;pwd=123”/> </connectionStrings>1C:普通配置⼆:Config⽂件读写1.依据连接串名返回字符串A:界⾯B:后台代码private void button1_Click(object sender, EventArgs e){//指定config⽂件读取string file = System.Windows.Forms.Application.ExecutablePath;System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file); string connectionString =config.ConnectionStrings.ConnectionStrings[“sql1”].ConnectionString.ToString(); MessageBox.Show( connectionString);}2.更新连接字符串A:界⾯B:后台代码private void button2_Click(object sender, EventArgs e){//////更新连接字符串//////连接字符串名称///连接字符串内容///数据提供程序名称//指定config⽂件读取string file = System.Windows.Forms.Application.ExecutablePath;Configuration config = ConfigurationManager.OpenExeConfiguration(file);bool exist = false; //记录该连接串是否已经存在//如果要更改的连接串已经存在if (config.ConnectionStrings.ConnectionStrings["sql1"] != null){exist = true;}// 如果连接串已存在,⾸先删除它if (exist){config.ConnectionStrings.ConnectionStrings.Remove("sql1");}//新建⼀个连接字符串实例ConnectionStringSettings mySettings =new ConnectionStringSettings("sql1", "Data","AA");// 将新的连接串添加到配置⽂件中.config.ConnectionStrings.ConnectionStrings.Add(mySettings);// 保存对配置⽂件所作的更改config.Save(ConfigurationSaveMode.Modified);// 强制重新载⼊配置⽂件的ConnectionStrings配置节ConfigurationManager.RefreshSection("connectionStrings");}1234567891011121314151617181920213.exe.confing⽂件中的appSettings配置节的valueA:界⾯B:后台代码private void button3_Click(object sender, EventArgs e){string file = System.Windows.Forms.Application.ExecutablePath;Configuration config = ConfigurationManager.OpenExeConfiguration(file);foreach (string key in config.AppSettings.Settings.AllKeys){if (key == “key1”){MessageBox.Show(config.AppSettings.Settings[“key1”].Value.ToString());}}}4.exe.confing⽂件中的appSettings配置节增加⼀对键值对A:界⾯B:后台代码private void button4_Click(object sender, EventArgs e){string file = System.Windows.Forms.Application.ExecutablePath;Configuration config = ConfigurationManager.OpenExeConfiguration(file);bool exist = false;foreach (string key in config.AppSettings.Settings.AllKeys){if (key == “key1”){exist = true;}}if (exist){config.AppSettings.Settings.Remove(“key1”);}config.AppSettings.Settings.Add(“key1”, “5555”);config.Save(ConfigurationSaveMode.Modified);ConfigurationManager.RefreshSection(“appSettings”);}⽅法2:⼀、配置⽂件概述:应⽤程序配置⽂件是标准的 XML ⽂件,XML 标记和属性是区分⼤⼩写的。

C#读取和写入配置文件

C#读取和写入配置文件

C#读取和写⼊配置⽂件使⽤.Net2.0中的ConfigurationManager可以⽅便的实现对配置app.config的读取和写⼊。

ConfigurationManager默认没有⾃动载⼊项⽬,使⽤前必须⼿动添加,⽅法如下:项⽬->引⽤->添加引⽤->选择System.configuration1.使⽤ConfigurationManager读配置⽂件我们可以将简单的配置内容放到app.config中的appSettings节点中如下:<appSettings><add key="GPRS.Port1" value="5002"/><add key="GPRS.Port2" value="5003"/><add key="GPRS.Port3" value="5004"/></appSettings>然后在程序中使⽤ConfigurationManager.AppSettings["GPRS.Port1"]来读取GPRS.Port1的值2.使⽤ConfigurationManager写配置⽂件如何想要把修改过的GPRS.Port1的值存放回app.config,可以使⽤下⾯的代码System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings["GPRS.Port1"].Value = “xxxxx”;config.Save(ConfigurationSaveMode.Modified);ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置⽂件。

c#通用配置文件读写类与格式转换(xml,ini,json)

c#通用配置文件读写类与格式转换(xml,ini,json)

c#通⽤配置⽂件读写类与格式转换(xml,ini,json).NET下编写程序的时候经常会使⽤到配置⽂件。

配置⽂件格式通常有xml、ini、json等⼏种,操作不同类型配置⽂件需要使⽤不同的⽅法,操作较为⿇烦。

特别是针对同时应⽤不同格式配置⽂件的时候,很容易引起混淆。

如果使⽤⼀个统⼀的⽅法对其进⾏操作,岂不美哉。

技术⽅案思路很简单,就是使⽤⼀个基类将配置⽂件的内容抽象出来,不同配置⽂件有不同的实现,对外统⼀调⽤⽅法。

最开始,打算⾃⼰写⼀个,后来对⽐ini与xml的时候(最开始没有把json考虑进来,⾃⼰⽤它来做配置⽂件的项⽬较少),发现xml完全可以替代ini⽂件的描述,直接⽤xml不是更好?于是⽅案就变成了⽤xml作为最基础的数据对象,其他配置⽂件转换成xml进⾏操作。

XDocument VS XmlDocment不解释,直接看图。

ini <-> xmlini⽂件构造⽐较简单,常见的ini有以下⼏条规范:注释以;开头,⼀直到⾏尾;类别项⽤[]包围,占据⼀整⾏;类别项下可以有多个配置项,直到下⼀个类别项或EOF结束;配置项格式:key=valueini格式是⼆级配置结构:类别>key。

通过类别和key就可以唯⼀获得⼀个值。

public static XDocument ToXml(this string[] iniStr){//ini没有根节点是不能直接转成xml的。

XDocument xdoc = new XDocument(new XElement("G" + Guid.NewGuid().ToString("N")));XElement node = xdoc.Root;foreach (var line in iniStr){var cline = line.Trim();if (string.IsNullOrWhiteSpace(cline)) continue;switch (line[0]){case ';':node.Add(new XComment(cline.Substring(1)));break;case '[':node = new XElement(cline.Substring(1, line.Length - 2));xdoc.Root.Add(node);break;case '\r':break;default:int index = cline.IndexOf('=');if (index < 1){throw new InvalidOperationException("Property does not contains '=' operator");}node.Add(new XElement(cline.Substring(0, index).Trim(), cline.Substring(index + 1)));break;}}return xdoc;}ini适合⽐较简单的配置读取,⽂件可读性强,读写也简单;⽽xml具有多级结构,复杂,还有dtd,xslt什么的,相对来说⽐较全⾯。

Linux下读取配置文件conf的C语言函数库ccl

Linux下读取配置文件conf的C语言函数库ccl

Linux下读取配置⽂件conf的C语⾔函数库ccl Introductionccl is the customizable configuration library, a collection of functions for application programmers wishing to interface with user-editable configuration files containing key/value pairs.ccl is customizable because it allows the comment, key/value, and string literal delimiters to be programatically specified at runtime. ccl is designed to be simple and portable; it has a small interface consisting of five functions and is written in ANSI/ISO C. ccl uses avl’s implemenation of binary search trees for backend storage.Download## Sample configuration fileDesktop-Picture = /usr/images/earth.jpgPosition = Centered"Background Color" = BlackThe following code demonstrates how to parse and access this file using ccl:#include "ccl/ccl.h"struct ccl_t config;const struct ccl_pair_t *iter;/* Set configuration file details */ment_char = '#';config.sep_char = '=';config.str_char = '"';/* Parse the file */ccl_parse(&config, "example.conf");/* Iterate through all key/value pairs */while((iter = ccl_iterate(&config)) != 0) {printf("(%s,%s)n", iter->key, iter->value);}/* Clean up */ccl_release(&config);When compiled, the snippet above produces the output(Background Color,Black)(Desktop-Picture,/usr/images/earth.jpg)(Position,Centered)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MFC读写ini配置文件
1.新建头文件如:iniFunc.h,在编辑区域粘贴以下内容:
/////////////////////////////////////////////////////////////////////////
// iniFunc.h: interface for the Cini class.
#if !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED _)
#define AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxwin.h>
class Cini
{
public:
static DWORD ReadString (char *section, char * key, char stringtoread[], char * filename);
static BOOL WriteString(LPCTSTR section, LPCTSTR key,char* stringtoadd, char
*filename);
Cini();
virtual ~Cini();
};
#endif
// !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_)
2.新建资源文件如:iniFunc.cpp,在编辑区域黏贴以下内容:
/////////////////////////////////////////////////////////////////////////
// ini.cpp: implementation of the Cini class.
#include "stdafx.h"
#include "ini.h"
/////////////////////////////////////////////////////////////////////////
//Cini类的构造函数和析构函数
Cini::Cini()
{
}
Cini::~Cini()
{
}
/////////////////////////////////////////////////////////////////////////
//写字符串到INI文件,GetLastError()函数用于返回写入失败
void error(LPSTR lpszFunction)
{
CHAR szBuf[80];
DWORD dw = GetLastError();
sprintf(szBuf, "%s failed: GetLastError returned %u\n",lpszFunction, dw);
MessageBox(NULL, szBuf, "Error", MB_OK);
ExitProcess(dw);
}
BOOL Cini::WriteString(LPCTSTR section, LPCTSTR key, char *stringtoadd, char *filename) {
CHAR FilePath[255];
GetModuleFileName(NULL,FilePath,255);
(strrchr(FilePath,'\\'))[1] = 0;
strcat(FilePath,filename);
return ::WritePrivateProfileString(section,key,stringtoadd,FilePath);
}
/////////////////////////////////////////////////////////////////////////
//从INI文件中读取字符串
DWORD Cini::ReadString(char *section, char * key, char stringtoread[], char * filename) {
CHAR FilePath[255];
GetModuleFileName(NULL,FilePath,255);
(strrchr(FilePath,'\\'))[1] = 0;
strcat(FilePath,filename);
return ::GetPrivateProfileString(section, key,NULL,stringtoread,255,FilePath);
}
3.当程序加载的时候读配置文件:
首先要在应用程序文件头部引用ini.h头文件
如下:
#include "ini.h"
找到OnInitDialog()函数,在其下黏贴如下代码:
// 保存ini各项值数组
char szOption1[MAX_PATH];
char szOption2[MAX_PATH];
char szOption3[MAX_PATH];
// 读取ini各项值
Cini::ReadString("配置信息", "选项1", szOption1, "test.ini");
Cini::ReadString("配置信息", "选项2", szOption2, "test.ini");
Cini::ReadString("配置信息", "选项3", szOption3, "test.ini");
m_strEdit1.Format("%s",szOption1);
m_strEdit2.Format("%s",szOption2);
m_strEdit3.Format("%s",szOption3);
UpdateData(FALSE);
说明:m_strEdit1,m_strEdit2,m_strEdit2是三个文本框对象的实例
4.当卸载(关闭)程序的时候写配置文件;
找到DestroyWindow()函数,在其下黏贴如下代码:
UpdateData(TRUE);
CString str1 = m_strEdit1;
CString str2 = m_strEdit2;
CString str3 = m_strEdit3;
char *p1 = str1.GetBuffer(str1.GetLength()+1);
char *p2 = str2.GetBuffer(str2.GetLength()+1);
char *p3 = str3.GetBuffer(str3.GetLength()+1);
Cini::WriteString("配置信息", "选项1", p1, "test.ini");
Cini::WriteString("配置信息", "选项2", p2, "test.ini");
Cini::WriteString("配置信息", "选项3", p3, "test.ini");
说明:m_strEdit1,m_strEdit2,m_strEdit2是三个文本框对象的实例
附工程视图及运行结果:
Ini头文件
Ini资源文件
引用头文件
引用头文件用户文件、应用程序文件
对话框加载
关闭对话框
配置文件里的记录。

相关文档
最新文档