从C中的一个二进制文本中读取字符串和整数

Joz*_*zef 1 c binary file

我正在使用C,我想从二进制文件中读取.

我知道它以下列方式包含字符串:字符串的长度,字符串本身,字符串的长度,字符串本身等等......

我想计算字符串Str出现在二进制文件中的次数.

所以我想做这样的事情:

int N;
while (!feof(file)){
    if (fread(&N, sizeof(int), 1, file)==1)
        ...
Run Code Online (Sandbox Code Playgroud)

现在我需要获取字符串本身.我知道它的长度.我应该做一个'for'循环并通过char获取fgetc char吗?我知道我不允许使用fscanf,因为它不是文本文件,但我可以使用fgetc吗?我能得到我期待的弦乐吗?(要使用长度大小为char*使用动态分配,并使用strcpy将其添加到当前字符串?)

use*_*116 5

你可以用分配一些内存malloc,然后fread进入该缓冲区:

char *str;

/* ... */
if (fread(&N, sizeof(int), 1, file)==1)
{
    /* check that N > 0 */
    str = malloc(N+1);
    if (fread(str, sizeof(char), N, file) == N)
    {
        str[N] = '\0'; /* terminate str */
        printf("Read %d chars: %s\n", N, str);
    }

    free(str);
}
Run Code Online (Sandbox Code Playgroud)