int main()
{
long int length = 0; /*file byte length*/
int index;
FILE *myFile;
myFile = fopen("test file", "r+b");
if(!myFile)
{
printf("Error, unable to open file");
return 1;
}
else
{
/*Lets find the total bytes in the file*/
fseek(myFile, 0, SEEK_END); /*Seeks end for length*/
length = ftell(myFile);
fseek(myFile,0, SEEK_SET); /*seeks beginning for reset*/
printf("Total file bytes is %d\n",length);
unsigned char buffer[32]; /*reading into buffer 4 bytes, 32 bits*/
size_t bytes_read = 0;
for(index = 0; index < 30; index++) /*30 is just a testing value*/
{
bytes_read = fread(&buffer,4,1,myFile); /*Read 4 bytes at a time*/
printf("Bytes read: %i", bytes_read);
printf("%s\n",buffer);
}
}
fclose(myFile);
return 0;
}
修改之前,我繼續下去,是的,這是不是一個高效的程序,將創造大量的開銷......二進制I/O,查找特定字節的文件
我讀每次4個字節,但不知道如何讀取實際的二進制0和1或十六進制值,以便比較和修改十六進制或二進制值。我將如何去閱讀在這裏打開的程序的十六進制/二進制值?
我不知道我明白你在說什麼。從技術上講,你唯一可以閱讀的是1和0。無論是十六進制,十進制還是八進制,基本上只是您讀到的內容的一種表示。所以,作爲示例,我可以比較255 == 0xFF。底層的1和0是相同的 – 2014-11-06 21:00:01
...只是一個友好的FYI,你對你的「緩衝區」聲明的評論是不正確的。你實際上是宣佈32字節,而不是32位 – 2014-11-06 21:00:56
@Don Shankin,我想我是每個字節的個別位給我32位,但現在我知道 – ShadowX 2014-11-06 21:05:10