戻り値のコードに問題があります。この部分では、戻り値がうまく印刷されています。私は、メインでの戻り値と同様に使用する場合、返される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