Bien programmer en langage C
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -20%
(Adhérents Fnac) Enceinte Bluetooth Marshall ...
Voir le deal
199.99 €

Lire un texte de taille inconnue a partir de la STDIN

2 participants

Aller en bas

Lire un texte de taille inconnue a partir de la STDIN Empty Lire un texte de taille inconnue a partir de la STDIN

Message  evariste 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

Revenir en haut Aller en bas

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

Message  -ed- 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;
}
-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 67
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

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

Message  evariste 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

Revenir en haut Aller en bas

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

Message  -ed- 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.
-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 67
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

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

Message  evariste 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

Revenir en haut Aller en bas

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

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser