J'utilise ce code pour lire un fichier dans un tampon. Le fichier est plein de structs
de type evaluacion
(y compris certaines variables char
et int
). Maintenant, j'ai le fichier entier dans un tampon, comment puis-je trouver les valeurs d'une variable dans le tampon maintenant? Par exemple buf.notamedia < 4
. Ils sont supposés être nombreux dans le fichier.Gestion des données dans un tampon
#include <unistd.h>
#include <sys/stat.h>
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)
{
/* ... */
}
}
Toute idée est la bienvenue
que je fais comme vous le dites, mais je n'obtenir une itération, je ne sais pas ce que je fais mal :(
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);
}
{
}
}
}
N'oubliez pas de mettre votre lecture dans une boucle pour lire le fichier entier. En outre, il peut être plus facile de simplement mmap() le fichier. – Suppressingfire
@Suppressingfire: il fait une seule lecture pour obtenir le fichier entier, à partir du moment où la fonction fstat() est exécutée, de toute façon. –