char* wcg()
{
char a[20];
sprintf(a,"%s","abcdef");
return a;
};
int _tmain(int argc, _TCHAR* argv[])
{
char *p=wcg();
char sz1[30];
memcpy(sz1,p,30); char sz2[30];
sprintf(sz2,"%s",p);
return 0;
}我本来以为sz1和sz2都不会得到"abcdef",但结果是,sz1得到了,sz2不正常, 这是为什么啊?
解决方案 »
- MFC单文档双视图中如何在Doc中判断当前活动视图?
- 是谁神化了IOCP——完成端口通讯服务器(IOCP Socket Server)设计(一)
- MFC菜单的问题
- vc 如何实现类似VC开发环境中BITMAP绘制的界面
- 我在程序中对WIN2K中的MSGINA.DLL文件调用,但老是说不能load,这是什么原因。
- 关于怎么进行注册表的操作,谢谢大家的帮助!~~
- 谁能解释一下 [I/O完成端口] 是什么?
- 请问:我请读取计算机ROM区中F000H:FFF5H-F000H:FFFFH中的内容。该怎么办?
- 在MFC6下做报表打印。除了水晶报表还有别的办法吗?
- 怎样得到RichEditView中光标的行列位置?
- 在http协议里客户端在哪个端口等待消息
- 关于程序原理的一个小问题
===========
不管是sz1还是sz2都有可能取不到,char a[20];是一局部变量,你返回它的地址,结果是随机的。有可能没有及时清除,能得到值,也有可能得不到值 。
char* wcg()
{
char a[] = "abcdef";/*静态区数据*/
return a;
};
int _tmain(int argc, _TCHAR* argv[])
{
char *p=wcg();
char sz1[30];
strcpy(sz1,p,30);
char sz2[30];
sprintf(sz2,"%s",p);
return 0;
}