教你怎么在windows上用C语言获得当前计算机名
1、我们先来看看程序效果图,获得当前计算机名。
然后使用windows的佛敏联hostname命令查看下当前计算机名,可以看到准确无误。
很多小伙伴肯定就会问,为什么程序获得的计算机名和hostname显示的计算机名不一样呢?这是因为windows是不敏感大小写的,也就是说(大小写都一样)

2、OK,我们开始写,这里小编用的Dev C++,当然什么编译器什么IDE都不重要。
这里小编只用到了2个头文件,第一个是标准头文件stdio.h,第二个则是windows.h。
windows.h是C和windowsAPI交互的一个头文件,这个头文件内定义了所有的windows API函数原型。
我们先include这2个头文件,然后再写出一个标准的main函数。
#include <stdio.h>
#include <windows.h>
int main(int argc,char * argv[])
{
return 0;
}

3、我们要用到API内的GetComputerName这个API函数。
该API函数原型如下:
BOOL GetComputerName( LPTSTR lpBuffer, LPDWORD lpnSize);
返回一个布尔类型,成功为True(非0),失败为假,C89编译器返回0
参数LPTSTR lpBuffer是作为一个字符串缓冲区,是一个字符串指针,用于接收我们的计算机名。
而LPDWORD lpnSize则是传递一个lpBuffer缓冲区大小的指针变量,注意是指针。
我们可以看看MSDN上的描述。

4、还有请注意一点,我们要怎么定义字符串缓冲区大小?在上一步的图片中小编就有意的用红色标识了这样一个宏:MAX_COMPUTERNAME_LENGTH + 1
MAX_COMPUTERNAME_LENGTH顾名思义是windows中设置计算机名的最大字符长度,+1是为了字符串\0结束标记
OK,我们可以开始写这样一个代码:
int sBufSize = MAX_COMPUTERNAME_LENGTH + 1;
char computerName[sBufSize];
写到这里我们还需要一个特别重要的变量,那就是LPDWORD类型的变量,如果稍微知道一点windows编程就知道windows在定义某种数据类型的时候,往往是L代码long长,S代表short短,P则是代表指针pointer,后面跟着的是数据类型。
由此我们可见LPDWORD类况伐型是一种DWORD长指针类型。
知道这些之后,我们就可以往下写了。
DWORD bufSizeP = sBufSize;
GetComputerName(computerName, &bufSizeP);

5、然后我们printf打印出我们获得的计算机名。
printf("您当前的计算机名是——[%s]",computerName);
然后编译运行看到结果。救侵

1、怎么关注?
在经验的右上角小编头像旁边点击关注,如图。

2、怎么点赞?
请在经验左侧点赞,如图。

3、怎么投票?
在经验的下方点击投票,如图。

4、如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。
如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。
不尽感激。
