我的代码中有一个问题,返回值。在这一部分,返回值被打印好:返回char *值
char *getUserName(){
char username[50];
DWORD username_len = 50;
GetUserName(username, &username_len);
char *returnValue=username;
printf("user: %s\n\n",returnValue);
return returnValue;}
char *getSystemName(){
TCHAR szComputerName[256];
DWORD cchComputerName = 256;
GetComputerName(szComputerName, &cchComputerName);
char *returnValue=szComputerName;
printf("system: %s",returnValue);
return returnValue;}
,但是,当我使用像在主返回值,则返回疯狂的事情(有时它返回以及系统名):
int main(){
char *userName = getUserName();
char *systemName = getSystemName();
printf("user: %s \n\n",userName);
printf("system: %s",systemName);
return 0;}
字串'username'被分配在堆栈上,而不是在堆,所以当函数返回其值*可能*被覆盖。你必须在堆上动态地分配它(通过'malloc'),或者在调用者中分配它并传递一个指针给它。 – anol