Tag: fread

fread如何知道文件何时在C中结束?

所以我不完全确定如何使用fread。 我有一个little-endian的二进制文件,我需要转换为big-endian,我不知道如何读取该文件。 这是我到目前为止: FILE *in_file=fopen(filename, “rb”); char buffer[4]; while(in_file!=EOF){ fread(buffer, 4, 1, in_file); //convert to big-endian. //write to output file. } 我还没有写过任何其他内容,但我只是不确定如何对’进步’有所了解,可以这么说。 任何帮助,将不胜感激。

什么是C / C ++中的“字节”

例如,这是fread的参考: size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); 读取一个count元素数组,每个元素的大小为“size bytes”…那么有多少BITS会读取一个fread(&x, 1, 1, stream) ? 八或CHAR_BIT ?

为什么fread会弄乱我的字节顺序?

我试图用fread()解析一个bmp文件,当我开始解析时,它会反转我的字节顺序。 typedef struct{ short magic_number; int file_size; short reserved_bytes[2]; int data_offset; }BMPHeader; … BMPHeader header; … hex数据是42 4D 36 00 03 00 00 00 00 00 36 00 00 00 ; 我通过fread(&header,14,1,fileIn);将hex数据加载到struct中fread(&header,14,1,fileIn); 我的问题是幻数应该是0x424d //’BM’ ()它将字节翻转为0x4d42 // ‘MB’ 为什么fread()会这样做,我该如何解决它; 编辑:如果我不够具体,我需要将整个hex数据块读入结构,而不仅仅是幻数。 我只选择了幻数作为例子。

读取c中由tab分隔的文件

我是C的新手,读取文件的东西让我发疯…我想读一个包括姓名,出生地和电话号码等文件。所有这些都是用标签分隔的 格式可能是这样的: Bob Jason Los Angeles 33333333 Alice Wong Washington DC 111-333-222 所以我创建了一个结构来记录它。 typedef struct Person{ char name[20]; char address[30]; char phone[20]; } Person; 我尝试了很多方法将这个文件读入struct但它失败了。 我厌倦了: read_file = fopen(“read.txt”, “r”); Person temp; fread(&temp, sizeof(Person), 100, read_file); printf(“%s %s %s \n”, temp.name, temp.address, temp.phone); 但是char字符串没有记录到由tab分隔的temp中,它将整个文件读入temp.name并获得奇怪的输出。 然后我尝试了fscanf和sscanf,那些都不适用于分离标签 fscanf(read_file, “%s %s %s”, temp.name, temp.address, temp.phone); 要么 fscanf(read_file, “%s\t%s\t%s”, […]

在C中解析/读取位图文件

我正在尝试制作一个程序来读取位图文件中的数据(.bmp,Windows文件格式,8位)。 现在我一直在图像数据之前阅读标题。 我使用了bmp的规范,我在这里找到了这些结构来保存bmp的文件头,信息头和图像数据: typedef struct { unsigned char fileMarker1; unsigned char fileMarker2; unsigned int bfSize; uint16_t unused1; uint16_t unused2; unsigned int imageDataOffset; } FILEHEADER; typedef struct { unsigned int biSize; int width; int height; uint16_t planes; uint16_t bitPix; unsigned int biCompression; unsigned int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; unsigned int biClrUsed; unsigned int biClrImportant; } […]

函数fread没有通过\ 0终止字符串

C语言中的新文件,尝试通过fread读取文件 这是文件的内容: line1 how 使用的代码: char c[6]; fread(c,1,5,f1) 输出var’c’时,内容在末尾显示随机字符(例如:line1 *) fread不会终止字符串或我错过了什么?

fread会移动文件指针吗?

简单的问题, 当我使用fread时: fread(ArrayA, sizeof(Reg), sizeBlock, fp); 我的文件指针, fp向前移动?

如何在c中读取二进制文件? (video,图像或文字)

我正在尝试将文件从指定的库复制到当前目录。 我可以完美地复制文本文件。 任何其他文件都会损坏。 该程序在它应该之前检测到一个feof。 #include int BUFFER_SIZE = 1024; FILE *source; FILE *destination; int n; int count = 0; int written = 0; int main() { unsigned char buffer[BUFFER_SIZE]; source = fopen(“./library/rfc1350.txt”, “r”); if (source) { destination = fopen(“rfc1350.txt”, “w”); while (!feof(source)) { n = fread(buffer, 1, BUFFER_SIZE, source); count += n; printf(“n = %d\n”, […]

用指针编写和读取(fwrite – fread)结构

我正在研究一个邮箱项目,我有这两个结构: struct mmbox_mail struct mmbox_mail { char *sender, *recipient; char *obj, *date; char flags; size_t size; }; 和 mail_t typedef struct{ struct mmbox_mail info; void *body; void *next; } mail_t; 我无法修改结构的字段,因为我需要可变数据(为此我使用char *而不是char [])。 每个mail_t结构都是一封邮件。 我需要将用户的每个邮件保存在一个文件中,可以是二进制文件或文本文件(但我认为使用二进制文件更好,因为我有一个很难用纯文本保存的void*体。 我试图这样做,但似乎它不起作用: while(mailtmp != NULL){ fwrite(mailtmp, sizeof(mail_t), 1, fp); /* next mail */ mailtmp=mailtmp->next; } while(mailtmp != NULL){ /* i have […]

存储在二进制文件中的int不成功fread(),分段错误

似乎有10个问题的顺序和(大多数)成功的答案解决因C中误用的fread()导致的分段错误。尽管如此,我遇到了这样的问题,但还没有找到解决方案。 我有一个二进制文件,包含一个int (称为nbins )和一个float数组(大小为nbins )。 当我尝试读取此文件时,它会成功打开并指向文件句柄,但在读取nbins int时会出现分段错误错误。 这是一个最小的例子: #include #include #include #define BPATH “/path/to/file” int main(int agrc, char **argv) { FILE *fd; int num; char fname[500]={}; int nbins; float *coords; num = 5; sprintf(fname,”%s/file%d.dat”, BPATH, num); if(!(fd=fopen(fname,”rb”))) { printf(“Can’t open file: %s\n\n”,fname); exit(0); } printf(“Reading input file:\n”); printf(“%p: %s\n”, fd, fname); // prints successfully fread(&nbins, […]