少年三国志神兵升阶表:用C读取INI配置文件
来源:百度文库 编辑:中财网 时间:2024/05/06 11:46:39
用C读取INI配置文件
在Windows下可以用GetPrivateProfileString或GetPrivateProfileInt方便读取.ini配置文件内容,但是在Linux平台上就一筹莫展了。为了解决该问题,打算用C来读取.ini,即可不受平台的限制了。
- #define CONF_FILE_PATH "Config.ini"
- #include
- #ifdef WIN32
- #include
- #include
- #else
- #define MAX_PATH 260
- #include
- #include
- #include
- #include
- #include
- #endif
- char g_szConfigPath[MAX_PATH];
- //获取当前程序目录
- int GetCurrentPath(char buf[],char *pFileName)
- {
- #ifdef WIN32
- GetModuleFileName(NULL,buf,MAX_PATH);
- #else
- char pidfile[64];
- int bytes;
- int fd;
- sprintf(pidfile, "/proc/%d/cmdline", getpid());
- fd = open(pidfile, O_RDONLY, 0);
- bytes = read(fd, buf, 256);
- close(fd);
- buf[MAX_PATH] = '\0';
- #endif
- char * p = &buf[strlen(buf)];
- do
- {
- *p = '\0';
- p--;
- #ifdef WIN32
- } while( '\\' != *p );
- #else
- } while( '/' != *p );
- #endif
- p++;
- //配置文件目录
- memcpy(p,pFileName,strlen(pFileName));
- return 0;
- }
- //从INI文件读取字符串类型数据
- char *GetIniKeyString(char *title,char *key,char *filename)
- {
- FILE *fp;
- char szLine[1024];
- static char tmpstr[1024];
- int rtnval;
- int i = 0;
- int flag = 0;
- char *tmp;
- if((fp = fopen(filename, "r")) == NULL)
- {
- printf("have no such file \n");
- return "";
- }
- while(!feof(fp))
- {
- rtnval = fgetc(fp);
- if(rtnval == EOF)
- {
- break;
- }
- else
- {
- szLine[i++] = rtnval;
- }
- if(rtnval == '\n')
- {
- #ifndef WIN32
- i--;
- #endif
- szLine[--i] = '\0';
- i = 0;
- tmp = strchr(szLine, '=');
- if(( tmp != NULL )&&(flag == 1))
- {
- if(strstr(szLine,key)!=NULL)
- {
- //注释行
- if ('#' == szLine[0])
- {
- }
- else if ( '\/' == szLine[0] && '\/' == szLine[1] )
- {
- }
- else
- {
- //找打key对应变量
- strcpy(tmpstr,tmp+1);
- fclose(fp);
- return tmpstr;
- }
- }
- }
- else
- {
- strcpy(tmpstr,"[");
- strcat(tmpstr,title);
- strcat(tmpstr,"]");
- if( strncmp(tmpstr,szLine,strlen(tmpstr)) == 0 )
- {
- //找到title
- flag = 1;
- }
- }
- }
- }
- fclose(fp);
- return "";
- }
- //从INI文件读取整类型数据
- int GetIniKeyInt(char *title,char *key,char *filename)
- {
- return atoi(GetIniKeyString(title,key,filename));
- }
- int main(int argc, char* argv[])
- {
- char buf[MAX_PATH];
- memset(buf,0,sizeof(buf));
- GetCurrentPath(buf,CONF_FILE_PATH);
- strcpy(g_szConfigPath,buf);
- int iCatAge;
- char szCatName[32];
- iCatAge = GetIniKeyInt("CAT","age",g_szConfigPath);
- strcpy(szCatName,GetIniKeyString("CAT","name",g_szConfigPath));
- return 0;
- }
下边是配置文件:
[CAT]
age=2
name=Tom
读取配置文件失败:Version.ini
怎样用VB读取ini配置文件???
如何用VB读取ini配置文件?
qq音速下载安装之后,操作运行完弹出对话框说读取配置文件失败:Version.ini
foobar读取配置文件出错!
我要进入QQ音速时出现:读取配置文件失败Version.ini 我试了关闭防火墙等方法都不行!
下载打开就是进不去\"读取配置文件失败:version.ini\" 但在删除/添加程序中没找到,无法修复
我的QQ音速进的时候出现读取配置文件失败version.ini是怎么回事啊``从安装也不行,怎么的都不行ping53
QQ音速出现读取配置文件失败:Version.ini,我觉得人们经常说的3个问题都不是,到底是怎么的啊?
QQ音速出现读取配置文件失败:Version.ini,我觉得人们经常说的3个问题都不是,到底是怎么的啊?
系统缺少开机配置文件boot.ini,怎么办?
请什么system.ini、win.ini和Boot.ini三个配置文件有什么用的啊?在什么情况下才使用它们啊?
用C读取TXT文件
求VB读取INI代码
怎样在VS2005里读取配置文件
·~█\/█\/█\ /█\/█\读取配置文件失败:version.ini█\/█\/█\ /█\/█\
如何把一个flash文件导出源码 即.ini配置文件
怎么用C语言读取一个文件
C:\boot.ini
如何用VB读取、输出.ini文件
windows2000提示yxycf.ini文件无法读取
关于VC++读取INI文件的问题
为什么我玩不到QQ音速啊?读取配置文件失败??..
连网的时候弹出“无法读取用户配置文件”