我正在使用此代码将文件读入缓冲区.该文件是满structs
的evaluacion
类型(包括一些char
和int
变量).现在我将整个文件放在缓冲区中,如何在缓冲区中找到一个变量的值?例如buf.notamedia < 4
.应该在文件中有很多.
#include#include int revisanotas(int fd) { int nbytes = 1; int nbytese = 0; evaluacion buf; struct stat datos; fstat(fd, &datos); printf("Size of file = %d \n", datos.st_size); char *buffer = (char *)malloc(datos.st_size); int actual = read(fd, buffer, datos.st_size); printf("actual = %d\n", actual); if (buf.notamedia >= 4.5 && buf.notamedia < 5) { /* ... */ } }
任何想法都非常受欢迎
我正在按照你说的做,但我只进行了一次迭代,我不知道我做错了什么:(
evaluacion* buffer=(evaluacion*)malloc(datos.st_size); int actual = read(fd,buffer,datos.st_size); printf("Number of structs = %d", (datos.st_size/(sizeof(evaluacion)))); for (i=0;i<(datos.st_size/(sizeof(evaluacion)));i++); { printf("Notamedia = %f\n",buffer[i].notamedia); if (buffer[i].notamedia >= 4.5 && buffer[i].notamedia < 5) { printf("Notamedia = %f\n",buffer[i].notamedia); } { } } }
tyranid.. 5
最简单地将缓冲区定义为指向数据结构的指针,并使用它来取消引用数据(尽管您应该确保文件大小是结构大小的倍数).
即
evaluacion* buffer = (evaluation*)malloc(datos.st_size); if(buffer[0].notamedia >= 4.5)
然后,您可以递增索引以访问您加载的其他结构.
最简单地将缓冲区定义为指向数据结构的指针,并使用它来取消引用数据(尽管您应该确保文件大小是结构大小的倍数).
即
evaluacion* buffer = (evaluation*)malloc(datos.st_size); if(buffer[0].notamedia >= 4.5)
然后,您可以递增索引以访问您加载的其他结构.