我想訪問一個文件,就像一個數組,而不是用fopen()和龜etc()/ fputc()函數等C二元文件處理爲數組
我在尋找一種方法這會給我一個指向文件的指針,然後我可以把它視爲一個大字符串(EOF終止或給定的長度,無論),我想整個文件在內存中,並需要快速訪問特定的部分。
這可能嗎?如果是的話,你能推薦一種方法嗎?我也很好奇,爲什麼這不是訪問c文件的默認方式,是因爲文件通常不會存儲在連續的內存中?
感謝您的幫助。
我想訪問一個文件,就像一個數組,而不是用fopen()和龜etc()/ fputc()函數等C二元文件處理爲數組
我在尋找一種方法這會給我一個指向文件的指針,然後我可以把它視爲一個大字符串(EOF終止或給定的長度,無論),我想整個文件在內存中,並需要快速訪問特定的部分。
這可能嗎?如果是的話,你能推薦一種方法嗎?我也很好奇,爲什麼這不是訪問c文件的默認方式,是因爲文件通常不會存儲在連續的內存中?
感謝您的幫助。
您正在尋找名爲內存映射文件的內容。例如,如果您使用的是Unix,請查找mmap
。
fd = open(...);
p = mmap(NULL, buf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
/* Use `p` like a pointer to some memory and fstat to find size. */
如果你在Win32上找CreateFileMapping
和MapViewOfFile
。
那麼,在許多環境中,您可以使用「內存映射」模式訪問文件,使您可以使用任何陣列或結構視圖覆蓋它。 – 2013-02-17 19:49:03