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
| int free_and_return(void *pMem, int returnValue)
{
free(pMem);
return returnValue;
}
int get_next_line(MY_FILE *pf, char **ppLine)
{
size_t tailleBuffer = LINE_BUFFER_SIZE;
char *buffer = malloc(tailleBuffer * sizeof *buffer);
*ppLine = NULL;
if(buffer != NULL)
{
size_t positionBuffer = 0;
int c;
while((c=my_getc(pf)) != EOF && c!='\n')
{
if(!append_char(&buffer, &tailleBuffer, &positionBuffer, (char)c))
return free_and_return(buffer, -1);
}
/*Ajoute caractere nul*/
if(!append_char(&buffer, &tailleBuffer, &positionBuffer, '\0'))
return free_and_return(buffer, -1);
*ppLine = buffer;
return (int)positionBuffer - 1; /*Carac nul non compte, comme strlen*/
}
return -1;
} |
Partager