我正在使用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将其添加到当前字符串?)
你可以用分配一些内存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)
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |