gpt4 book ai didi

c - 使用 fread 将数据存储到 char 缓冲区中

转载 作者:行者123 更新时间:2023-11-30 18:00:55 27 4
gpt4 key购买 nike

我正在开发一个项目,需要从二进制文件中读取数据。我正在尝试将数据存储到字符缓冲区中。假设二进制文件由一个字符、一个 int 和一个 double 组成,那么 char 缓冲区需要多大大小?我如何转换回 int 和 double ?

我正在将数据读入字符缓冲区,因为这会提高程序的速度。

谢谢!

最佳答案

以下示例程序 fread()charintDATASIZE 组来自命令行指定文件的 float:

typedef struct Data_s {
char c;
int i;
float f;
} Data_t;

#define DATASIZE 3

int main(int argc, char ** argv) {
if (1 >= argc) {
fprintf(stderr, "usage: %s <file name>\n", argv[0]);
return EXIT_SUCCESS;
}

{
FILE * f = fopen(argv[1], "r");
if (!f) {
perror("fopen() failed.");
return EXIT_FAILURE;
}

{
Data_t data[DATASIZE];
size_t sizeData = sizeof(*data);
size_t sizeToRead = sizeof(data)/sizeData;
memset(data, 0, sizeToRead * sizeData);
size_t sizeRead = fread(&data, sizeData, sizeToRead, f);
if (0 != fclose(f))
perror("fclose() failed,");
if (sizeToRead != sizeRead) {
perror("fread() failed.");
return EXIT_FAILURE;
}

for (size_t i = 0; i < sizeToRead; ++ i)
printf("read c=0x%02hhx, i=%d, f=%f from '%s'\n", data[i].c, data[i].i, data[i].f, argv[1]);
}
}

return EXIT_SUCCESS;
}

关于c - 使用 fread 将数据存储到 char 缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com