求助:关于用c语言读写ini文件的问题

yunwuxin009 2013-05-09 11:30:43
我想用windows.h中的函数对ini文件进行操作,代码如下:
int main()
{
string strName="zhangsan";
string AppName="StudentInfo";
string KeyName="Name";
string ConfigFileName="config.ini";

LPCTSTR lpAppName=(LPCTSTR)AppName.c_str();
LPCTSTR lpKeyName=(LPCTSTR)KeyName.c_str();
LPCTSTR lpFileName=(LPCTSTR)ConfigFileName.c_str();
LPCTSTR lpString=(LPCTSTR)ConfigFileName.c_str();

int nAge;
nAge=12;


if(WritePrivateProfileString(lpAppName,lpKeyName,lpString,lpFileName))
{
printf("写入文件成功\n");
}

return 0;
}

配置文件和生成的exe文件在同一个目录下面,但是写入不成功,没有输出语句就直接结束了,请问是代码的问题还是别的什么,谢谢。在线等
...全文
208 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou1912 2013-05-10
  • 打赏
  • 举报
回复
引用 9 楼 yunwuxin009 的回复:
谢谢大家的回复,上面的问题已经解决了,现在又有一个新的问题 比如开始向配置文件中写入了7个坐标点的值(x,y) 但是如果更改配置文件后,只有6个坐标点了,程序可以成功写出六个点坐标, 但是还是会保留第七个点的坐标。 请问这个问题可以怎么解决,谢谢。
你应该有一个值, 告诉目前有几个坐标点 PointCount=7 Point1=1,2 Point2=.. PointX=.. 只要修改PointCount=6就可以了
youyou1912 2013-05-09
  • 打赏
  • 举报
回复
引用 3 楼 yunwuxin009 的回复:
[quote=引用 2 楼 youyou1912 的回复:] wstring strName=L"zhangsan"; wstring AppName=L"StudentInfo"; wstring KeyName=L"Name"; wstring ConfigFileName=L"d:\\config.ini";
谢谢回复,请问一下这个能用相对路径吗? 按照你说的方法可以写出来,但是wstring ConfigFileName=L"config.ini";就不行了 这个该怎么办呢?用别的代码也可以,只要能实现在相对路径下面写文件就行,谢谢[/quote] 一样, 只是前面加了工作目录而已, 不能写, 可能是程序对程序工作目录没有访问权限了. 用GetLastError可以知道细节原因.
yunwuxin009 2013-05-09
  • 打赏
  • 举报
回复
引用 2 楼 youyou1912 的回复:
wstring strName=L"zhangsan"; wstring AppName=L"StudentInfo"; wstring KeyName=L"Name"; wstring ConfigFileName=L"d:\\config.ini";
谢谢回复,请问一下这个能用相对路径吗? 按照你说的方法可以写出来,但是wstring ConfigFileName=L"config.ini";就不行了 这个该怎么办呢?用别的代码也可以,只要能实现在相对路径下面写文件就行,谢谢
youyou1912 2013-05-09
  • 打赏
  • 举报
回复
wstring strName=L"zhangsan"; wstring AppName=L"StudentInfo"; wstring KeyName=L"Name"; wstring ConfigFileName=L"d:\\config.ini";
youyou1912 2013-05-09
  • 打赏
  • 举报
回复
wstring strName=L"zhangsan"; wstring AppName=L"StudentInfo"; wstring KeyName=L"Name"; wstring ConfigFileName=L"d:\\config.ini";
a784063999 2013-05-09
  • 打赏
  • 举报
回复
WritePrivateProfileStringA(lpAppName,lpKeyName,lpString,lpFileName); 這様應該可以用string
yunwuxin009 2013-05-09
  • 打赏
  • 举报
回复
还有一个问题,请问能不能直接用string的类型,如果使用wstring类型,虽然能够正常写入,但是读取的时候存在一些问题
yunwuxin009 2013-05-09
  • 打赏
  • 举报
回复
谢谢大家的回复,上面的问题已经解决了,现在又有一个新的问题 比如开始向配置文件中写入了7个坐标点的值(x,y) 但是如果更改配置文件后,只有6个坐标点了,程序可以成功写出六个点坐标, 但是还是会保留第七个点的坐标。 请问这个问题可以怎么解决,谢谢。
buyong 2013-05-09
  • 打赏
  • 举报
回复
引用 3 楼 yunwuxin009 的回复:
[quote=引用 2 楼 youyou1912 的回复:] wstring strName=L"zhangsan"; wstring AppName=L"StudentInfo"; wstring KeyName=L"Name"; wstring ConfigFileName=L"d:\\config.ini";
谢谢回复,请问一下这个能用相对路径吗? 按照你说的方法可以写出来,但是wstring ConfigFileName=L"config.ini";就不行了 这个该怎么办呢?用别的代码也可以,只要能实现在相对路径下面写文件就行,谢谢[/quote] GetModulePath
youyou1912 2013-05-09
  • 打赏
  • 举报
回复
引用 6 楼 yunwuxin009 的回复:
做好事double变量写入文件,谢谢
#include <sstream>

double data = 10.123;
stringstream ss;
string string;
ss << data;
getline(ss, string);
yunwuxin009 2013-05-09
  • 打赏
  • 举报
回复
做好事double变量写入文件,谢谢
yunwuxin009 2013-05-09
  • 打赏
  • 举报
回复
引用 4 楼 youyou1912 的回复:
[quote=引用 3 楼 yunwuxin009 的回复:] [quote=引用 2 楼 youyou1912 的回复:] wstring strName=L"zhangsan"; wstring AppName=L"StudentInfo"; wstring KeyName=L"Name"; wstring ConfigFileName=L"d:\\config.ini";
谢谢回复,请问一下这个能用相对路径吗? 按照你说的方法可以写出来,但是wstring ConfigFileName=L"config.ini";就不行了 这个该怎么办呢?用别的代码也可以,只要能实现在相对路径下面写文件就行,谢谢[/quote] 一样, 只是前面加了工作目录而已, 不能写, 可能是程序对程序工作目录没有访问权限了. 用GetLastError可以知道细节原因.[/quote] 用wstring ConfigFileName=L".//config.ini";可以在当前目录下写文件了 请问如果要写一个int或者double的变量应该怎么做,网上有些说利用format转换格式, 但是string里面好像没有这个方法,谢谢。

69,337

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧