㈠ 關於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或匯編語言讀取硬碟卷標
using System;
using System.Management;
class test
{
static void Main()
{
//遍歷硬碟.光碟機 ..卷標名稱
string [] array=Environment.GetLogicalDrives();
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i].ToString());
}
//獲得硬碟序列號
String HDid;
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
HDid = (string)mo.Properties["Model"].Value;
Console.WriteLine("硬碟序列號:" + HDid.ToString());
}
}
}
㈢ C P U能直接讀取硬碟上的數據
不能。
就像你得用眼睛來將你看見的東西交給你的大腦處理一樣,cpu從內存里讀取數據進行處理,由硬碟獲得的數據轉到到內存,內存經由cpu運算獲得新的結果後返回到內存,再有內存轉交給各個應用程序。
㈣ c語言中有什麼函數是可以在windows下讀取磁碟扇區信息的
可以使用windows api CreateFile(...),使用磁碟模式,可以針對分區打開或者針對硬碟打開;之後用ReadFile(...) 按扇區讀取磁碟數據;
這兩個函數具體用法可以在一些編程論壇、博客中找到,很容易找到的。
㈤ 怎麼用C語言從某個硬碟上讀入文件
#include
"stdio.h"
int
main()
{
FILE
*fp=NULL;
int
ch;
fp=fopen("D:\\sample.txt","r");
//打開文件,需要注意的是,你必須把該文件放在D盤下,不然會報錯
while(1)
{
ch=fgetc(fp);
//
if(ch==EOF)/*end
of
file文件末尾*/
break;
printf("%c",ch);
}
//讀取數據,直到文件末尾,讀取一個數據就輸出一個數據
fclose(fp);
//關閉文件
return
0;
}
調試無誤。
要把數據存到a[i],改下就行,
int
i=0,a[100];
把上面的變數ch的值賦給數組就行
a[i++]=ch;
㈥ 使用c語言打開磁碟的方法。
#include<stdlib.h>
FILE*fp;
fp=fopen("d:\\文件名.後綴","w");//路徑,以寫的方式打開文件
不知道你要的是不是這個...你都寫win API了,應該會文件操作...
你還可以參考
http://..com/question/556544078.html?qbl=relate_question_2&word=使用c語言打開磁碟的方法.&optimi=
㈦ c、c++、易語言讀取硬碟扇區數據源碼
1、CreateFile打開硬碟,方法查MSDN關於 CreateFile的說明
2、ReadFile讀取扇區數據,讀取數據長度必須為每扇區位元組數的整數倍
㈧ 用C語言,如何讀取硬碟信息
調用系統API。
㈨ 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 P U能直接讀取硬碟上的數據嗎
不能。就像人得用眼睛來將你看見的東西交給你的大腦處理一樣,cpu從內存里讀取數據進行處理,由硬碟獲得的數據轉到內存,內存經由cpu運算獲得新的結果後返回到內存,再有內存轉交給各個應用程序。