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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include "my.h"
char *replace(char *finale, int cmp, char *buffer, int *i)
{
char *replace;
int j;
//seulement, ça ne peut pas marcher, puisque my_strlen() fait des siennes.
if (finale != 0)
j = my_strlen(finale);
else
j = 0;
replace = malloc((j + cmp + 1) * sizeof(char*));
if (finale != NULL)
my_strncpy(replace, finale, j);
else
my_strncpy(replace, "", j);
my_strncpy((replace + j), (buffer + *i), cmp);
replace[j + cmp] = 0;
free(finale);
*i = (*i + cmp + 1);
return (replace);
}
char *get_next_line(const int fd)
{
static char buffer[SIZE_BUFFER + 1];
static int read_buff = 0;
static int i;
char *finale;
int cmp;
//ici, vous l'aurez compris, on récupère tout ce qui a été tapé sur l'entrée standard.
finale = 0;
cmp = 0;
while (1)
{
if (i >= read_buff)
{
i = 0;
if (!(read_buff = read(fd, buffer, SIZE_BUFFER)))
return (finale);
cmp = 0;
}
if (buffer[i + cmp] == '\n')
return (finale = replace(finale, cmp, buffer, &i));
if (i + cmp == (read_buff - 1))
finale = replace(finale, (cmp + 1), buffer, &i);
cmp = cmp + 1;
}
} |
Partager