Pages : 1
#1 Le 27/09/2017, à 13:58
- plouf1221
flot de texte [RESOLU]
Bonjour,
J'essaye de faire le programme suivant :
Écrire un programme qui copie son entrée sur sa sortie en remplaçant les séries de un ou plusieurs espaces par un seul caractère espace.
Voici le programme que j'ai écris :
// Bibliothéques standart :
//====================================================================================
#include<stdio.h>
#include<stdlib.h>
//====================================================================================
// Le main :
//====================================================================================
int main (void)
{
int c;
while ((c = getchar ()) != EOF)
{
putchar (c);
while (c == ' ')
{
c = getchar ();
}
}
return EXIT_SUCCESS;
}
//====================================================================================
Le programme est défaillant.
Comme on ne connaît pas le nombre d'espace à l'avance ça respire la boucle while, ce que j'ai fait.
Mais en testant mon programme je vois que la première lettre de chaque mot est manquante et je ne comprends pas pourquoi.
Dernière modification par plouf1221 (Le 27/09/2017, à 16:44)
Hors ligne
#2 Le 27/09/2017, à 15:56
- pingouinux
Re : flot de texte [RESOLU]
Bonjour,
C'est normal, parce que lorsque tu lis un caractère non blanc après un ou plusieurs blancs dans le while interne, tu ne l'écris pas et lis le caractère suivant au début du while externe.
Tu peux faire ceci :
............................................
while ((c = getchar ()) != EOF)
{
putchar (c);
while (c == ' ')
{
c = getchar ();
if (c!=' ') putchar (c);
}
}
............................................
Ajouté : Autre façon de faire
............................................
int c, n_blanc=0;
while ((c = getchar ()) != EOF)
{
if(c==' ') n_blanc++;
else n_blanc=0;
if(n_blanc<=1) putchar(c);
}
............................................
Dernière modification par pingouinux (Le 27/09/2017, à 16:08)
Hors ligne
#3 Le 27/09/2017, à 16:44
- plouf1221
Re : flot de texte [RESOLU]
A ok je saute le caractere qui m’intéresse car je fait un autre appel avec getchar lorsque je suis dans le while externe.
A oué c'est vraiment bien vu.
Merci pingouinux.
Hors ligne
#4 Le 27/09/2017, à 16:54
- pingouinux
Re : flot de texte [RESOLU]
Autre méthode :
............................................
while ((c = getchar ()) != EOF)
{
putchar (c);
while (c == ' ')
{
c = getchar ();
if (c!=' ') ungetc (c,stdin);
}
}
............................................
Hors ligne
Pages : 1