当前位置:首页 » 编程语言 » c语言序列号

c语言序列号

发布时间: 2023-03-25 13:21:08

1. linux下怎么用c获取硬盘物理序列号

1、在Linux系统中通过c语言获取硬盘序列号,可以借助于ioctl()函数,该函数原型如下:

intioctl(intfd,unsignedlongrequest,...);
ioctl的第一个参数是文件标识符,用open()函数打开设备时获取。
ioctl第二个参数为用于获得指定文件描述符的标志号,获取硬盘序列号,一般指明为HDIO_GET_IDENTITY。
ioctl的第三个参数为一些辅助参数,要获取硬盘序列号,需要借助于structhd_driveid结构体来保存硬盘信息,该结构体在Linux/hdreg.h中,structhd_driveid的声明如下
structhd_driveid{
unsignedshortconfig;/lotsofobsoletebitflags*/
unsignedshortcyls;/*Obsolete,"physical"cyls*/
unsignedshortreserved2;/*reserved(word2)*/
unsignedshortheads;/*Obsolete,"physical"heads*/
unsignedshorttrack_bytes;/*unformattedbytespertrack*/
unsignedshortsector_bytes;/*unformattedbytespersector*/
unsignedshortsectors;/*Obsolete,"physical"sectorspertrack*/
unsignedshortvendor0;/*vendorunique*/
unsignedshortvendor1;/*vendorunique*/
unsignedshortvendor2;/*Retiredvendorunique*/
unsignedcharserial_no[20];/*0=not_specified*/
unsignedshortbuf_type;/*Retired*/
unsignedshortbuf_size;/*Retired,512byteincrements
*0=not_specified
*/
……
};


2、源代码如下

#include<stdio.h>
//ioctl()的声明头文件
#include<sys/ioctl.h>
//硬盘参数头文件,hd_driveid结构声明头文件
#include<linux/hdreg.h>
//文件控制头文件
#include<sys/fcntl.h>
intmain()
{
//用于保存系统返回的硬盘数据信息
structhd_driveidid;
//这里以第一块硬盘为例,用户可自行修改
//用open函数打开获取文件标识符,类似于windows下的句柄
intfd=open("/dev/sda",O_RDONLY|O_NONBLOCK);
//失败返回
if(fd<0){
perror("/dev/sda");
return1;}
//调用ioctl()
if(!ioctl(fd,HDIO_GET_IDENTITY,&id))
{
printf("SerialNumber=%s ",id.serial_no);
}
return0;
}

编译完成后,执行效果如下:

2. 天合教育C语言安装序列号 在线跪求

二级VB笔试安装序列号: RBN3Q-WH7TZ-A6HBC-MJ2KD
二级VFP笔试安装序列号: RF4KM-DP9QF-JX2HT-HY3MR
二级Access笔试安装序列号:ER9GN-LD7XW-KM5RS-EC2CL
三级网络笔试安装序列号:喊梁 SW6CB-KB5PS-CH8AK-TE2GL
二级C语言笔试安装序郑配运列卖族号: CN7DM-JW2HB-IS3NF-MK5UL

3. c语言ld是什么意思

ld的L是long的意思,%ld表示按longint格式(有符号长整型数格式)输出。
在printf函数的控制字符串里,%i和%d是一个意思,都是按十进制中扰输出对应的变量值。写成%id,就是在输出十进制数后加一个字母d。
例如:MSVC++6.0,printf("%d",3276899);输出3276899{MSVC++6.0中64位整型,用_int64x=12345678976;这种变量输出格式用printf("%I64d",x)卖行旦。
简介
C语言是一门带散面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。

4. C语言怎么获取硬件信息【网卡序号。。。】

这个需要相关的库以及API。
给你一个获取cpu信息的函数:
DWORD MyCPUSpeed()
{
BSTR bstrMyCpuName=NULL;
BSTR bstrMyPropName = NULL;
VARIANT pVal;
char szText[256];
int nCpuNum=0;
DWORD dwCpuSpeed=0;
IWbemClassObject *pCpuInst=NULL;
IWbemQualifierSet* pQualSet = NULL;
bstrMyPropName = SysAllocString(L"CurrentClockSpeed");
if(bstrMyPropName == NULL)
{
return dwCpuSpeed;
}
while(1)
{
memset(szText,0,sizeof(szText));
sprintf(szText,"Win32_Processor.DeviceID=\"CPU%d\"", nCpuNum);
bstrMyCpuName = _bstr_t(szText);
if(bstrMyCpuName == NULL)
{
break;
}
if(pSvc->GetObject(bstrMyCpuName, 0L, NULL, &pCpuInst, NULL) != S_OK)
{
break;
}
if(pCpuInst->Get(bstrMyPropName, 0L, &pVal, NULL, NULL) == S_OK)
{
nCpuNum++;
dwCpuSpeed += pVal.lVal;
}
VariantClear(&pVal);
SysFreeString(bstrMyCpuName);
bstrMyCpuName = NULL;
}
if(bstrMyPropName != NULL)
{
SysFreeString(bstrMyPropName);
bstrMyPropName = NULL;
}
if(bstrMyCpuName != NULL)
{
SysFreeString(bstrMyCpuName);
bstrMyCpuName = NULL;
}
memset(szText,0,sizeof(szText));
sprintf(szText, "CPU个数: %d, CPU频率: %ld Mhz", nCpuNum, dwCpuSpeed);
cout<<"------------------------"<<szText<<"-------------------------"<<endl;
return dwCpuSpeed;
}

5. C语言生成连续的序列号,帮我看看

#include <stdio.h>耐启
main()
{
/***********************************
* student_pwd:最终密码列
* i:默认昌闹如前缀
* j:弯前专业位
* k:班级位
* l:坐号位
* ************************************/
long student_pwd;
int j,k,l;
for(j=6;j<=9;j++)
for(k=1;k<=6;k++)
for(l=1;l<=45;l++)
printf("07218%d%d%02d\n",j,k,l);

}

6. c语言:从10000到99999之间产生1000个随机数,并从小到大排序,且需要输出序列号。

代码:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <time.h>

struct num_list

{

int id;

int num;

};

int main()

{

num_list n_list[1000];

srand((unsigned)time(NULL));

for (int i = 0; i < 1000; i++) {

int current_n = rand() % 89999 + 10000;

n_list[i].id = i + 1;

n_list[i].num = current_n;

}

for (int i = 0; i < 1000; i++)

{

for (int j = i + 1; j < 1000; j++)

{

if (n_list[i].num > n_list[j].num)

{

int id_temp = n_list[j].id;

int num_temp = n_list[j].num;

n_list[j].id = n_list[i].id;

n_list[j].num = n_list[i].num;

n_list[i].id = id_temp;

n_list[i].num = num_temp;

}

}

}

for (int i = 0; i <敬改 1000; i++)

{

printf("序号:%d 亮瞎判 值:%d ", n_list[i].id, n_list[i].num);

}

return 0;

}

运行神则截图:

7. 如何用C语言获取硬盘或主板或CPU的序列号

获取CPU序列号要使用 汇编指令

比较麻烦

static DWORD g_eax; // 存储返回的eax
static DWORD g_ebx; // 存储返回的ebx
static DWORD g_ecx; // 存储返回的ecx
static DWORD g_edx; // 存储返回的edx

void Executecpuid(DWORD veax)
{
asm("cpuid"
:"=a"(g_eax),
"=b"(g_ebx),
"罩耐=c"(g_ecx),
"=d"(g_edx)
:"a"(g_eax));
}
int isSupport;
void GetSerialNumber(WORD nibble[6])
{
Executecpuid(1); // 执行物型春cpuid,参数为 eax = 1
isSupport = g_edx & (1<<18); // edx是否租盯为1代表CPU是否存在序列号
if (FALSE == isSupport) // 不支持,返回false
{
return ;
}
Executecpuid(3); // 执行cpuid,参数为 eax = 3
memcpy(&nibble[4], &g_eax, 4); // eax为最高位的两个WORD
memcpy(&nibble[0], &g_ecx, 8); // ecx 和 edx为低位的4个WORD

}

热点内容
双拨上传 发布:2024-11-03 04:22:09 浏览:44
数据库索引结构 发布:2024-11-03 04:02:14 浏览:234
xcode加密 发布:2024-11-03 03:53:45 浏览:225
算法设计王晓东pdf 发布:2024-11-03 03:38:51 浏览:20
本地数据库服务器 发布:2024-11-03 03:33:07 浏览:331
方舟搭建服务器多少内存 发布:2024-11-03 03:33:07 浏览:526
android全屏代码 发布:2024-11-03 03:30:12 浏览:848
键入凭据存储的密码 发布:2024-11-03 03:30:01 浏览:722
设置密码字符怎么设置 发布:2024-11-03 03:22:50 浏览:26
脚本战士是什么意思 发布:2024-11-03 03:22:39 浏览:873