验证C中的文件

YoT*_*LCD 5 c

我需要为我正在制作的游戏验证加载文件,我遇到了麻烦:

我只需要知道第一个字符是否是某个范围内的int,如果下一个字符是unsigned short int(检查每个字符的类型和值),我找不到这个函数.

另外,我需要检查第n个字符是否是文件中的最后一个字符(如果不是则返回一些错误代码).

该文件是二进制类型.

我怎么能解决这个问题?

谢谢!

E:

这是我的加载文件功能:

Cod_Error load(Info * gameInfo)
{
    FILE * loadFile;
    unsigned short int dif;
    int i;


    randomizeSeed();

    gameInfo ->undo = FALSE;

    loadFile = fopen(gameInfo->fileArchivo, "rb");


    fread(&dif, sizeof(dif), 1, loadFile);

    gameInfo->size = sizeFromDif(dif);
    gameInfo->undoPossible = FALSE;

    gameInfo->board = newBoard(gameInfo->size);
    if(gameInfo->board == NULL)
        return ERROR_MEM;

    fread(&(gameInfo->score), sizeof(Score), 1, loadFile);

    fread(&(gameInfo->undos), sizeof(unsigned short int), 1, loadFile);

    for(i = 0; i < gameInfo->size; i++)
        fread(gameInfo->board[i], sizeof(Tile), gameInfo->size, loadFile);

    fclose(loadFile);

    return OK;
}
Run Code Online (Sandbox Code Playgroud)

Mag*_*sch 2

简短的回答:你不能。

长答案:

在二进制文件中,没有指定二进制数据代表什么。该规范必须来自读取该文件的程序的开发人员。例如,让我们从任意文件中获取 2 个字节。

00101101 00110111

现在,这完全取决于读取这些字节的程序。您可以尝试将其读取为 int,并检查如果解释为 int 是否有意义(即在一定范围内),并且您可以对二进制数据与任何其他数据类型的任何其他组合执行相同的操作。但是您绝对无法判断使用什么数据类型将其写入文件,因为现在它只是二进制文件。

引用@M.Oehm:

你不能读取 4 个字节并说“哦,它们是浮点数”。

然而你可以说,

“如果我把这些算作浮点数的话,它们是否在我设定的指定范围内?”