1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| //fonctions.c
#include <stdlib.h>
#include <stdio.h>
typedef unsigned char byte;
byte* readFile(const char *path, size_t *pFileSize)
{
size_t fileSize;
byte* pData;
//On n'accepte pas de pointeur nul ni pour path ni pour pFileSize;
//on retourne *systématiquement* la taille, car il n'y a pas de moyen "safe" de s'en passer.
if(path==NULL || pFileSize==NULL)
return NULL;
...
fileSize = ... //Ici on utilise le code pour calculer la taille
*pFileSize = fileSize;
pData = calloc(fileSize, 1);
if(pData != NULL)
{
size_t nbRead = fread(pData, 1, fileSize, ...);
if(nbRead < fileSize)
{
//Erreur!
...
free(pData);
pData = NULL;
}
}
return pData;
} |