我的代碼中有一個問題,返回值。在這一部分,返回值被打印好:返回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