c語言序列號
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
}