首页
社区
课程
招聘
[讨论]关于C++中字符串的一个貌似荒唐的问题
发表于: 2007-5-29 19:19 5044

[讨论]关于C++中字符串的一个貌似荒唐的问题

2007-5-29 19:19
5044
问题如下:(On WinXP & VC++ 6.0)

能够输出正确结果的程序:
#include <stdio.h>
#include <windows.h>
int main()
{
    char buf[256];
    DWORD nsize=256;
    if(GetUserName(buf,&nsize));
    {
        printf("%s\n",buf);
        printf("%d\n",nsize);
    }   
    GetComputerName(buf,&nsize);
    printf("%s\n",buf);
    return 0;
}

输出了错误结果的程序:
#include <stdio.h>
#include <windows.h>
int main()
{
    char buf[256];
    DWORD nsize=256;
    GetComputerName(buf,&nsize);
    printf("%s\n",buf);
    if(GetUserName(buf,&nsize));
    {
        printf("%s\n",buf);
        printf("%d\n",nsize);
    }
    return 0;
}

何解?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
2
两个函数都有问题,输出正确结果的只不过碰巧用户名比计算机名长
#include <stdio.h>
#include <windows.h>
int main()
{
    char buf[256];
    DWORD nsize=256;
    GetComputerName(buf,&nsize);
    printf("%s\n",buf);
    nsize=256;
    if(GetUserName(buf,&nsize));
    {
        printf("%s\n",buf);
        printf("%d\n",nsize);
    }
    return 0;
}
2007-5-29 19:36
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
明白一些了

nsize也是[in/out]参数

GetComputerName(buf,&nsize);返回了较短的计算机名的长度

那当调用GetUserName(buf,&nsize)时nsize过小
2007-5-29 19:45
0
游客
登录 | 注册 方可回帖
返回
//