const char* GetDateTimeStr(int iFormat)
{
try
{
char* szDateTime = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
char tmp[41];
memset(tmp,0,sizeof(tmp));
sprintf(tmp,"aaaaaaaaa");
strcpy(szDateTime,tmp); //发生异常
return (const char*)szDateTime;
}
catch(...)
{
return NULL;
}
}
{
try
{
char* szDateTime = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
char tmp[41];
memset(tmp,0,sizeof(tmp));
sprintf(tmp,"aaaaaaaaa");
strcpy(szDateTime,tmp); //发生异常
return (const char*)szDateTime;
}
catch(...)
{
return NULL;
}
}
这样定义,szDateTime指向一个常量, 不能更改它的值,即不能strcpychar *szDateTime;
szDateTime = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
...
而你这样定义的等于时一个 const char 了
int nSize=strlen("HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE");
char* szDateTime=new char[nSize+1];
strcpy(szDateTime,"HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE");
szDateTime[nSize]=0;
..............
{
static char szDateTime[64] = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
char tmp[41];
memset(tmp,0,sizeof(tmp));
sprintf(tmp,"aaaaaaaaa");
strcpy(szDateTime,tmp); //发生异常
return (const char*)szDateTime;
}
{
char szDateTime[64] = "bbbbbbbbbbbbbbbbbbbbb";
char tmp[41];
memset(tmp,'\0',sizeof(tmp));
sprintf(tmp,"aaaaaaaaa");
strcpy(szDateTime,tmp); //正常
return (const char*)szDateTime;
}
代码中不要随便用指针,否则错了都不知在哪里了,呵呵