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

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

2007-5-29 19:19
5040
问题如下:(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;
}

何解?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 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
游客
登录 | 注册 方可回帖
返回
//