Lire un texte de taille inconnue a partir de la STDIN
2 participants
Page 1 sur 1
Lire un texte de taille inconnue a partir de la STDIN
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
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
Re: Lire un texte de taille inconnue a partir de la STDIN
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().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
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;
}
Re: Lire un texte de taille inconnue a partir de la STDIN
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.
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
Re: Lire un texte de taille inconnue a partir de la STDIN
Je n'ai pas ce problème sous Windows :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.
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.
- 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>
Re: Lire un texte de taille inconnue a partir de la STDIN
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.
Cordialement.
evariste- Messages : 3
Date d'inscription : 09/02/2010
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|