strcpy
char *getDay(int idx)
{
// static char buf[20];
char buf[20];
strcpy(buf,msg[idx]);
return buf;
}
int _tmain(int argc, _TCHAR* argv[])
{
printf("%s--%s\n",getDay(0),getDay(1));
printf("%s\n",getDay(1));
system("pause");
return 0;
}
这样打印出来时:
sunday--ay
monday
1. 为什么第一行后面个字没有打印完整?
当将上面char buf[20];改成static char buf[20];的时候打印出来时:
sunday--sunday
monday
为什么现在又完整了,而且两个都是sunday?
请教
[解决办法]
局部变量,函数返回后,已经不可用,要这样改:
- C/C++ code
char* getDay(int idx){ char* buf = (char*)malloc(sizeof(char) * 20); strcpy(buf, msg[idx]); return buf;}
[解决办法]
char buf[20];-----是临时局部变量,函数退出之后,栈里的数据会被销毁
static char buf[20];---静态变量,函数退出之后,仍存在。。
[解决办法]