Lire un texte de taille inconnue a partir de la STDIN

Voir le sujet précédent Voir le sujet suivant Aller en bas

Lire un texte de taille inconnue a partir de la STDIN

Message  evariste le Mar 9 Fév 2010 - 22:51

Bonjour,
comment on peux lire un texte de taille inconnue a partir de la console (le texte est terminé par une fin de ligne)? moi j'ai fais ceci :

int main (int argc, char **argv)
{
int buffer[1024];
while (fgets(buffer,1024, stdin)) {
/*Travail a faire*/
}

return 0;
}

Je voulais savoir est ce que c'est juste? Merci

evariste

Messages : 3
Date d'inscription : 09/02/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Lire un texte de taille inconnue a partir de la STDIN

Message  -ed- le Mer 10 Fév 2010 - 14:16

evariste a écrit:Bonjour,
comment on peux lire un texte de taille inconnue a partir de la console (le texte est terminé par une fin de ligne)? moi j'ai fais ceci :

int main (int argc, char **argv)
{
int buffer[1024];
while (fgets(buffer,1024, stdin)) {
/*Travail a faire*/
}

return 0;
}

Je voulais savoir est ce que c'est juste? Merci
Oui, à part que le type de 'buffer' est char est non int, c'est correct. Simplement pour quitter, il faut simuler une fin de fichier. Sous DOS/Windows, taper Ctrl-Z <enter> et rien d'autre (dans une ligne vide). Sous Unixoide, c'est Ctrl-D (n'importe quand). Attention, il manque aussi le prototype de fgets().

Je préfère coder comme ceci :
Code:

#include <stdio.h>

int main (void)
{
  char buffer[1024];
  while (fgets(buffer, sizeof buffer, stdin) != NULL)
  {
      /*Travail a faire*/
  } 

  return 0;
}

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: Lire un texte de taille inconnue a partir de la STDIN

Message  evariste le Mer 10 Fév 2010 - 23:52

Merci beaucoup pour la réponse, effectivement il manque : stdlib.h. juste une question comment ca se fait que sous unix, quand j'ecris ce code et je le lance en ligne de commande en faisant : ./a.out mon texte (je copie et paste mon texte), meme si je fais ctrl+D j'ai une erreur de segmentation? autre chose toujours sous unix si je redirige STDIN vers mon a.out j'ai des fois des surprises:
echo "mon texte" | ./a.out --> ne marche pas!
echo "mon texte" < ./a.out --> ne marche pas!

est ce que vous pouvez m'éclairez sur ce point.

Merci.

evariste

Messages : 3
Date d'inscription : 09/02/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Lire un texte de taille inconnue a partir de la STDIN

Message  -ed- le Jeu 11 Fév 2010 - 18:35

evariste a écrit:Merci beaucoup pour la réponse, effectivement il manque : stdlib.h. juste une question comment ca se fait que sous unix, quand j'ecris ce code et je le lance en ligne de commande en faisant : ./a.out mon texte (je copie et paste mon texte), meme si je fais ctrl+D j'ai une erreur de segmentation? autre chose toujours sous unix si je redirige STDIN vers mon a.out j'ai des fois des surprises:
echo "mon texte" | ./a.out --> ne marche pas!
echo "mon texte" < ./a.out --> ne marche pas!

est ce que vous pouvez m'éclairez sur ce point.

Merci.
Je n'ai pas ce problème sous Windows :

Exécution directe de mon code (sous Code::Blocks/Windows) :
Code:

lkjdfmlkj sdlkjmdsqlkjf
^Z

Process returned 0 (0x0)  execution time : 7.124 s
Press any key to continue.
dans une console
Code:

C:\dev\hello>"bin/Debug/hello.exe"
mlkds mlksq mlksq mlksq
lksql lkjsq mlkjsq
^Z

C:\dev\hello>"bin/Debug/hello.exe" < main.c

C:\dev\hello>
Pas de plantage ... Je ne peux malheureusement pas tester sous Linux, mais je ne vois pas de raisons pour laquelle ça ne fonctionnerait pas.

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Re: Lire un texte de taille inconnue a partir de la STDIN

Message  evariste le Jeu 11 Fév 2010 - 21:39

Je vous remercie pour les réponses et aussi (j'ai oublié de le faire dans mon premier topic) pour le temps que vous consacrez pour nous apprendre le C :).

Cordialement.

evariste

Messages : 3
Date d'inscription : 09/02/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Lire un texte de taille inconnue a partir de la STDIN

Message  Contenu sponsorisé Aujourd'hui à 21:18


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum