當前位置:首頁 » 編程語言 » c語言獲取硬碟

c語言獲取硬碟

發布時間: 2022-05-03 03:24:22

c語言 獲取硬碟物理號

獲取的大多數是磁碟序列號而已
物理號不容易獲取
可以參考下
http://hiker2008.blog.51cto.com/10867/77918
就於邏輯序列號而言
我把VB改寫成C的,可以參考下:
#include
#include
main()
{
DWORD
VolumeSerialNumber;
char
VolumeName[256];
GetVolumeInformation(
"c:\\
",
VolumeName,12,
&VolumeSerialNumber,
NULL,NULL,NULL,10
);
printf("c盤的卷標:%s
\n",VolumeName);
printf("c盤的序列號:%ld
\n",VolumeSerialNumber);
}

② c語言中有什麼函數是可以在windows下讀取磁碟扇區信息的

可以使用windows api CreateFile(...),使用磁碟模式,可以針對分區打開或者針對硬碟打開;之後用ReadFile(...) 按扇區讀取磁碟數據;
這兩個函數具體用法可以在一些編程論壇、博客中找到,很容易找到的。

③ c語言如何得到磁碟分區名稱

標准C
#include
<stdio.h>
#include
<stdlib.h>
#define
start
setpath()
#define
GetDisk
getdisk//獲取磁碟
#ifdef
GetDisk(char
diskname[])
#else
#define
false
0
#endif
#define
pause
while(1)
//程序暫停
/************計算磁碟並且返回磁碟盤符******************/
int
getdisk(char
diskname[]){
FILE
*fp;
if(!(NULL==(fp=(fopen(diskname,"wb"))))){
fclose(fp);
return
1;
}
return
0;
}
/**************將枚舉出所有的盤符*****************/
void
start{
int
i;
char
c,disk[9]={':','/','a','.','d','a','t'};
disk[8]='\0';
for
(i=7;i>=0;i--){
disk[i]=disk[i-1];
}
for
(c='A';c<='Z';c++){
disk[0]=c;
if(1==GetDisk(disk)){
printf("%c盤\n",c);
}
}
}
void
main(){
start;
pause;
}

④ c語言中怎麼讀取一個磁碟文件

由於\為轉義字元,所以對於目錄分割符\需要寫兩個\字元,即\\。讀取為:
fopen("F:\\test\\test.txt", "r");

⑤ C語言 獲取磁碟可用空間

給,在VC6上已經編譯運行確認:

/*
* 獲取硬碟分區序列號
* [email protected] 2007.5.28
*/
#include <string.h>
#include <stdio.h>
#include <windows.h>
int main() {
_ULARGE_INTEGER lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD serialNumber, maxComponentLength, fsFlags;
TCHAR szFileSystem[12];
TCHAR szVolumeName[24];
TCHAR szRoot[4] = "c:\\";//這里寫上你需要獲取的磁碟的分區

if (!GetVolumeInformation(
szRoot,
szVolumeName,
sizeof(szVolumeName),
&serialNumber,
&maxComponentLength,
&fsFlags,
szFileSystem,
sizeof(szFileSystem))) {
printf("Failed to retrieve drive information\n");
}
GetDiskFreeSpaceEx(szRoot, &lpFreeBytesAvailableToCaller, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);
//根據MSDN的說明,如果分區大於2G一定要用GetDiskFreeSpaceEx

printf("卷標: %s$ %s\n分區類型: %s\n卷序列號: %04X-%04X\n",
szRoot,
szVolumeName,
szFileSystem,
serialNumber >> 16,
serialNumber & 0xFFFF
);
printf("分區總空間大小: %d MB\n",lpTotalNumberOfBytes.QuadPart / (1024 *1024));
printf("分區剩餘空間大小: %d MB\n",lpTotalNumberOfFreeBytes.QuadPart / (1024 *1024));
printf("調用者可用的空間大小: %d MB\n",lpFreeBytesAvailableToCaller.QuadPart / (1024 *1024));
return(0);
}

⑥ c語言怎麼隨機的讀取磁碟文本文件

你的用變數path作為文件絕對路徑,你每次要將它的值改變,而你的文件位置是保持不變的,這樣當然讀不到文件。你要保持同步,就是說path的值發生改變是就要同時把文件給重命名了,給文件重命名用rename()函數,函數原型:int rename(char *lpOldName,char *lpNewName);第一個參數是文件原名,第二個是重命名後的文件名,若重命名成功返回1,否則返回0。頭文件stdio.h或io.h。還有要說你上面的代碼有錯,char path[20]="c:\\"; //你忘記了轉義字元而且你應該從path[3]開始賦值,因為"c:\\"除去一個空字元就只有3個字元,下標是從0開始的(\\是一個字元)繼續追問: 來自手機問問 文件都在一個文件夾裡面,直接改變對應的路徑是不是能直接讀取到對應的文件呢?我想產生一個隨機的路徑,而這個隨機只在文件名上體現 補充回答: 來自手機問問 知道你的意思,你是是比如文件是c:\test.txt,然後隨機名是c:\t138.txt。這就對了,重命名可以不改變文件所在目錄啊,比如這樣調:rename("c:\\test.txt","c:\\t138.txt");
文件名就由test.txt變成了t138.txt,而所在目錄並沒有發生變化。 繼續追問: 來自手機問問 那怎麼才能展現隨機讀取呢?新手,包含。 補充回答: 來自手機問問 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char path[]="C:\\ff.txt";
char rname[2];
FILE *fp;
/*產生10~20的隨機數*/
srand((unsigned)time(NULL));
/*將整數轉換成字元串*/
itoa(rand()%20+10,rname,10);
path[2]=rname[0];
path[3]=rname[1];
/*重命名文件*/
rename("C:\\ff.txt",path);
fp=fopen(path,"r");
if(fp==NULL)
{
printf("Open the file failed.\n");
}
else
{
printf("Open the file succed.\n");
}
return 0;
}
這段代碼演示了c盤原來有一個ff.txt文件,後來被隨機重命名為**.txt,程序去讀取。
運行程序前要保證c盤存在ff.txt文件。 繼續追問: 來自手機問問 還是那樣,編譯報錯,哎,謝了 補充回答: 來自手機問問 我vc6編譯通過啊,你什麼編譯器? 繼續追問: 來自手機問問 一樣。可能有地方寫錯了。 補充回答: VC6.0編譯通過啊,可以稍微改一下: 補充回答: #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{ char path[]="C:\\ff.txt";
char rname[2];
FILE *fp; /*產生10~20的隨機數*/
srand((unsigned)time(NULL));
/*將整數轉換成字元串*/
itoa(rand()%20+10,rname,10);
path[3]=rname[0];
path[4]=rname[1];
/*重命名文件*/
rename("C:\\ff.txt",path);
fp=fopen(path,"r");
if(fp==NULL)
{
printf("Open the file failed.\n");
}
else
{
printf("Open the file succed.\n");
}
return 0;
}

⑦ 關於C語言程序在一個固定電腦中運行,讀取硬碟序列號的問題

之前收集的獲取硬碟信息的函數語言是C++,可以成功獲得硬碟驅動器的信息,希望能幫到您
void
CGetdiskinfo(DWORD
*dwNum,char
chDriveInfo[][256])//獲取硬碟信息
{
DWORD
DiskCount
=
0;
//利用GetLogicalDrives()函數可以獲取系統中邏輯驅動器的數量,函數返回的是一個32位無符號整型數據。
DWORD
DiskInfo
=
GetLogicalDrives();
//通過循環操作查看每一位數據是否為1,如果為1則磁碟為真,如果為0則磁碟不存在。
while(DiskInfo)
{
//通過位運算的邏輯與操作,判斷是否為1
//Sleep(10);
if(DiskInfo&1)
{
DiskCount++;
}
DiskInfo
=
DiskInfo
>>
1;//通過位運算的右移操作保證每循環一次所檢查的位置向右移動一位。*/
}
//
if
(*dwNum
<
DiskCount)
//
{
//
return;//實際的磁碟數目大於dwNum
//
}
*dwNum
=
DiskCount;//將磁碟分區數量保存
//-------------------------------------------------------------------//
//通過GetLogicalDriveStrings()函數獲取所有驅動器字元串信息長度
int
DSLength
=
GetLogicalDriveStrings(0,NULL);
//
WCHAR*
DStr
=
new
WCHAR[DSLength];
char
*DStr=new
char[DSLength];
memset(DStr,0,DSLength);
//通過GetLogicalDriveStrings將字元串信息復制到堆區數組中,其中保存了所有驅動器的信息

⑧ C語言,獲取硬碟剩餘空間函數的使用方法。GetDiskFreeSpaceEx函數使用方法

GetDiskFreeSpaceEx是windows的API啊,調用之後就會獲得信息。
說明
獲取與一個磁碟的組織以及剩餘空間容量有關的信息
返回值
Long,非零表示成功,零表示失敗。會設置GetLastError
參數表
參數 類型及說明
lpRootPathName String,不包括卷名的磁碟根路徑名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一個變數,用於容納調用者可用的位元組數量
lpTotalNumberOfBytes LARGE_INTEGER,指定一個變數,用於容納磁碟上的總位元組數
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一個變數,用於容納磁碟上可用的位元組數
適用平台
Windows 95 OSR2,Windows NT 4.0

⑨ Linux下如何用C語言獲取硬碟使用情況

system(執行shell命令)相關函數fork,execve,waitpid,popen表頭文件#include定義函數intsystem(constchar*string);函數說明system()會調用fork()產生子進程,由子進程來調用/bin/sh-cstring來執行參數string字元串所代表的命令,此命令執行完後隨即返回原調用的進程。在調用system()期間SIGCHLD信號會被暫時擱置,SIGINT和SIGQUIT信號則會被忽略。返回值如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數string為空指針(NULL),則返回非零值。如果system()調用成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為system()調用/bin/sh失敗所返回的127,因此最好能再檢查errno來確認執行成功。附加說明在編寫具有SUID/SGID許可權的程序時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。

熱點內容
優酷怎麼給視頻加密 發布:2025-05-14 19:31:34 瀏覽:633
夢三國2副本腳本 發布:2025-05-14 19:29:58 瀏覽:859
phpxmlhttp 發布:2025-05-14 19:29:58 瀏覽:432
Pua腳本 發布:2025-05-14 19:24:56 瀏覽:448
蘋果像素低為什麼比安卓好 發布:2025-05-14 19:13:23 瀏覽:459
安卓機微信怎麼設置紅包提醒 發布:2025-05-14 19:00:15 瀏覽:271
androidsystem許可權設置 發布:2025-05-14 18:56:02 瀏覽:970
mq腳本 發布:2025-05-14 18:45:37 瀏覽:25
仙境傳說ro解壓失敗 發布:2025-05-14 18:45:01 瀏覽:868
betweenand的用法sql 發布:2025-05-14 18:39:25 瀏覽:250