afficher une seul ligne [ C ] - C - Programmation
Marsh Posté le 26-11-2004 à 20:36:29
sinon s = malloc
à partir de là l'ancien s est perdu
donc strncpy recopie s sur lui même (et non l'ancien sur le nouveau)
de plus:
char *strncpy(char *dest, const char *src, size_t n);
acec strncpy( s, nb_read,s );
tu fais n'importe quoi.
regarde realloc
Marsh Posté le 26-11-2004 à 22:39:42
houla recommence tout §
deja 1 truc :
declaration => "char s;"
et tu retournes "char *get_next_line(const int fd)"
Reflechis plus au code tu pars en vrille la!
conseil de tek3
Marsh Posté le 26-11-2004 à 23:01:12
Et aussi n'oublie que lorsque tu fais une allocation mémoire il est (peu) probable que l'allocation soit impossible. Donc teste le retour de la fonction malloc !
Code :
|
En gros voilà ce à quoi ça devrait ressembler.
Bon courage.
Marsh Posté le 26-11-2004 à 20:25:55
voila, je pense que la premiere boucle incrementerai le compteur, qui servirait au malloc, et pour renvoyer la premiere ligne du fichier lut, afin de l'afficher.
mais sa marche pas du tt.
si quelqu'un a une idee pour pouvoir afficher une seul ligne du fichier, merci d'avance.
int main(const int fd)
{
char s;
while ((s = get_next_line(0)))
{
my_putstr(s);
free(s);
}
return (0);
}
char *get_next_line(const int fd)
{
int i;
int nb_read;
char *s;
char buffer_read[BUFF_SIZE1];
i = 0;
while (nb_read = read(fd, buffer_read, BUFF_SIZE1) != '\n')
{
i++;
my_put_nbr(i);
}
if (nb_read = read(fd, buffer_read, BUFF_SIZE1) == '\n')
{
s = malloc(i+1 * sizeof(char));
strncpy(s, nb_read, s);
my_putstr(s);
}
return (s);
}