[ C ] afficher une seul ligne

afficher une seul ligne [ C ] - C - Programmation

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);
}

Reply

Marsh Posté le 26-11-2004 à 20:25:55   

Reply

Marsh Posté le 26-11-2004 à 20:33:56    

fgets
puts

Reply

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

Reply

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 :)

Reply

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 :
  1. char* s=NULL;
  2. [...] /* La variable "s" n'a pasencore été modifiée */
  3. s=(char*)malloc(sizeof(char)*(taille_chaine+1));
  4. if (s == NULL)
  5. {
  6.   Libération_de_se_qui_doit_l'être();
  7.   Un_petit_message();
  8.   exit(EXIT_FAILURE);
  9. }
  10. s[0]='\0'; /* Ou ce que tu veux d'autres ... */

En gros voilà ce à quoi ça devrait ressembler.
Bon courage.


Message édité par darkoli le 26-11-2004 à 23:02:37

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed