❶ 關於C語言中,如何能夠知道文件中,結構體數據塊的個數。
可以通過ReadFile函數讀取你的文件,它有一個參數就是返回實際讀了多少個位元組的數據,然後除以你的sizeof(struct),就可以了 試試看
❷ C語言對結構體文件的讀取
C語言中對結構體數據格式文件進行讀取時,必須以二進制格式打開文件,然後按結構體類型變數內存塊方式進行數據讀取,相關讀數據命令為fread()。
函數說明:
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
從stream文件流中,讀取nmemb個size大小的數據塊到ptr所指的內存buf中,返回讀取到的有效數據塊數。
如,有如下結構體定義:
typedef struct TEST
{
int num;
double score;
}STRTEST;
STRTEST data ;
FILE *fp = fopen("file.dat", "rb" ) ; //按二進制格式打開文件
int n=fread( &data, sizeof(STRTEST), 1, fp ); //讀取一個數據塊到變數data中。
注意,當結構體中定義的變數有指針類型時,在存儲數據時,就不能按結構體進行存儲了。
因為,指針變數中存儲的是內存地址,而程序在不同環境運行時,所使用的內存地址是不同的,只存儲內存地址,不能把真正的數據保存下來,所以,即使是正確讀取到文件內容,也不能得到當時的結構體內存數據。因而,在存儲結構體數據時,要根據結構體類型變數特點採用正確的方法進行存儲,才能正確的讀取。