当前位置:  开发笔记 > 编程语言 > 正文

管理缓冲区内的数据

如何解决《管理缓冲区内的数据》经验,为你挑选了1个好方法。

我正在使用此代码将文件读入缓冲区.该文件是满structsevaluacion类型(包括一些charint变量).现在我将整个文件放在缓冲区中,如何在缓冲区中找到一个变量的值?例如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)

然后,您可以递增索引以访问您加载的其他结构.



1> tyranid..:

最简单地将缓冲区定义为指向数据结构的指针,并使用它来取消引用数据(尽管您应该确保文件大小是结构大小的倍数).

evaluacion* buffer = (evaluation*)malloc(datos.st_size);
if(buffer[0].notamedia >= 4.5)

然后,您可以递增索引以访问您加载的其他结构.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有