读取ini配置文件时,成员变量的内存数据被隐式修改了
2012-12-15 16:14
681 查看
//头文件里连续声明两个WORD变量(内存连续)
WORD m_wRecvValue1;
WORD m_wRecvValue2;
//初始化为255
m_wRecvValue1=255;
m_wRecvValue2=255;
//从配置文件读取数据
TCHAR OutBuf[255];
TCHAR szFileName[255];
memset(OutBuf, 0, sizeof(OutBuf));
GetPrivateProfileString("AppName","KeyName","1",OutBuf,255,szFileName);
//假设读取失败,使用默认值
_snscanf(OutBuf,strlen(OutBuf),"%d",&m_wRecvValue1);
//执行完此行,wRecvValue2就会被改为0,而不是初始化的255了.
//因为_snscanf会严格按照指定格式%d(4字节)来赋值,而wRecvValue1只占2个字节
//所以会继续覆盖后面的2个字节,即wRecvValue2的位置
//(默认值1=0x00000001,在内存中是从低到高排列,即01 00 00 00.)
//当_snscanf从m_wRecvValue1的首地址开始输入数据时,先取内存值01 00对应的0x0001(2字节)输入给了m_wRecvValue1,则m_wRecvValue1=1
//再继续取后面内存值00 00对应的0x0000(2字节)输入给了m_wRecvValue2,则m_wRecvValue2=0,到此4个字节输入完毕。
//解决方法:
m_wRecvValue1 = GetPrivateProfileInt("AppName","KeyName",1,szFileName);
总结:
读取ini文件时,基本数据使用GetPrivateProfileInt读取;字符串使用GetPrivateProfileString读取。防止内存数据被隐式修改。
WORD m_wRecvValue1;
WORD m_wRecvValue2;
//初始化为255
m_wRecvValue1=255;
m_wRecvValue2=255;
//从配置文件读取数据
TCHAR OutBuf[255];
TCHAR szFileName[255];
memset(OutBuf, 0, sizeof(OutBuf));
GetPrivateProfileString("AppName","KeyName","1",OutBuf,255,szFileName);
//假设读取失败,使用默认值
_snscanf(OutBuf,strlen(OutBuf),"%d",&m_wRecvValue1);
//执行完此行,wRecvValue2就会被改为0,而不是初始化的255了.
//因为_snscanf会严格按照指定格式%d(4字节)来赋值,而wRecvValue1只占2个字节
//所以会继续覆盖后面的2个字节,即wRecvValue2的位置
//(默认值1=0x00000001,在内存中是从低到高排列,即01 00 00 00.)
//当_snscanf从m_wRecvValue1的首地址开始输入数据时,先取内存值01 00对应的0x0001(2字节)输入给了m_wRecvValue1,则m_wRecvValue1=1
//再继续取后面内存值00 00对应的0x0000(2字节)输入给了m_wRecvValue2,则m_wRecvValue2=0,到此4个字节输入完毕。
//解决方法:
m_wRecvValue1 = GetPrivateProfileInt("AppName","KeyName",1,szFileName);
总结:
读取ini文件时,基本数据使用GetPrivateProfileInt读取;字符串使用GetPrivateProfileString读取。防止内存数据被隐式修改。
相关文章推荐
- 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.
- java读取和修改ini配置文件实例代码
- 解决Myeclipse8.5总是报内存不够。修改了Myeclipse.ini配置文件却不生效问题
- Python读取修改ini配置文件[ConfigParser]
- Java读取和修改ini配置文件
- ZendFramework学习第三章(核心组件—使用配置数据之从ini配置文件中读取数据)
- 基于ini配置文件实现多维数组数据的按行存储和读取
- Java读取和修改ini配置文件
- java读取和修改ini配置文件
- java读取和修改ini配置文件
- c#读取ini配置文件、将配置数据保存至ini文件
- 学习:C#读取ini配置文件数据
- 通过修改my.ini配置文件来解决MySQL 5.6 内存占用过高的问题
- java读取和修改ini配置文件
- ArrayList 与HashSet的比较,及应用反射读取properties配置文件中的数据进行实例化再调用,以及类加载器的使用;还有HashCode的分析,及导致内存泄露,内存溢出的原因之一
- Python读取修改ini配置文件[ConfigParser]
- ZendFramework学习第三章(核心组件—使用配置数据之从ini配置文件中读取数据)
- c写个linux的小程序,从bin文件中读取数据,打印结构体中的成员变量。
- 向INI配置文件写入\读取数据
- shell脚本读取ini配置文件的值