教你怎么在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 + 1MAX_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);然后编译运行看到结果。