簡體   English   中英

如何在c中獲取文件長度?

[英]How to get a file length in c?

我只是有一個關於如何獲取包含十六進制數字的文件長度的快速問題。 例如:

724627916C

我能想到的唯一方法是將十六進制值轉換為二進制:

724627916C => 0111001001000110001001111001000101101100

然后計算二進制值的位數。 只是想知道這是不是正確的方法? 謝謝

不,這不是正確的方法。

FILE *fp = fopen("filename", "rb");
fseek(fp, 0, SEEK_END);
int lengthOfFile = ftell(fp);
fclose(fp);

原則上:打開文件,搜索到最后並檢索當前位置。 你會得到的是文件中的字節數。

編輯:你的問題有點不清楚。 是否要檢索文件中的字節數,或者文件中十六進制字符串表示的字節數? 如果是后一種情況,並且文件中沒有任何空格,只需將上述方法返回的字節數除以2即可。

在類似於* x的操作系統中, stat可用stat目的。

試試這個答案以獲得一些幫助。 如果這不起作用,谷歌有很多關於用C確定文件大小的信息。

如果你想對這些位進行計數,那么設置一個數組可以更簡單地告訴你在每個十六進制數字中設置了多少位(由字符代碼索引),然后在不明確轉換為二進制的情況下添加內容。

假設C99:

static bits_map[256] =
{
    ['0'] = 0, ['1'] = 1, ['2'] = 1, ['3'] = 2,
    ['4'] = 1, ['5'] = 2, ['6'] = 2, ['7'] = 3,
    ['8'] = 1, ['9'] = 2,
    ['a'] = 2, ['b'] = 3, ['c'] = 2, ['d'] = 3,
    ['e'] = 3, ['f'] = 4,
    ['A'] = 2, ['B'] = 3, ['C'] = 2, ['D'] = 3,
    ['E'] = 3, ['F'] = 4,
};

size_t n_bits = 0;
int c;
while ((c = getchar()) != EOF)
    n_bits += bits_map[c];

printf("Number of bits set: %zd\n", n_bits);

C中的文件長度使用函數_filelength()

#include <io.h>

int fn, fileSize;
FILE * f = fopen(&String, "rb");
if (f)
{
  fn = _fileno(f);
  fileSize = _filelength(fn);
}
fclose(f);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM