原程序:
#include <windows.h>
#include <stdio.h>
#define INFO_BUFFER_SIZE 32768
void  main()
{
TCHAR  infoBuf[INFO_BUFFER_SIZE];
DWORD length = INFO_BUFFER_SIZE;
DWORD errorcode;
if(!::GetUserName(infoBuf,&length))
         {
            errorcode = GetLastError();
            printf("errorcode: %d",errorcode);
         }
         else
   printf("UserName: %s\n",&infoBuf);
}
能运行,就是不能显示出用户名.
那个122的查了还是不明白啊!!!理解不了英文的

解决方案 »

  1.   

    错误122的英语解释是: The data area passed to a system call is too small.
      

  2.   

    是不是意思说我的BUF太小啊??可是怎么会呢!我的用户名只有几个字符啊.不过我的用户名是:Hero Killer 里面有个空格..这个应该没有关系吧!!
    楼上讲的我还是不能理解啊!!!
      

  3.   

    发觉没有问题
    TCHAR  infoBuf[32768];
    DWORD length = 32768;
    DWORD errorcode;
    memset(infoBuf, 0, sizeof(infoBuf)/sizeof(TCHAR));
    if(!GetUserName(infoBuf, &length))
    {
    errorcode = GetLastError();
    }
      

  4.   

    多加了一句这个memset(infoBuf, 0, sizeof(infoBuf)/sizeof(TCHAR));
    然后BUF还是不变也行啊.memset用来干嘛的?好像是用来填入字符的啊!!!
      

  5.   

    #define INFO_BUFFER_SIZE 32768
    void  main()
    {
    //这样也是可行的
    TCHAR  infoBuf[INFO_BUFFER_SIZE] = {0};但最好还是不要定义太大的缓冲区, 一般 255 就行