今天写了一个函数
有了一些感触。。。
押韵。。。
函数贴出来
char* read_string(const char* section,const char* name, char* szfile)
{
char* error = "error";
char szbuffer[256];
memset(szbuffer,0,sizeof(szbuffer));
if(GetPrivateProfileString(section,name,"",szbuffer,sizeof(szbuffer),szfile))
return szbuffer;
return error;
}
一个很简单的用来读取配置文件中字符串的函数
跑起来之后发现读取的所有字符串都无效,跟断点不是文件和字段名什么的问题
问题出在那个szbuffer,它是一个局部变量
局部变量在栈里,生存周期在函数结束之后就结束
所以,在传出这个szbuffer的一瞬间它已经失效了,也就丢失了读取出来的值
so。。。
解决方法也很容易,不用局部的buffer就行,写个全局或者静态的
============================================分割线
这些不是重点。。。
重点是:
指针使用的精髓:
它是一个地址,我们要确保,在使用这个地址的时候,它还是有效且可靠的。