1 mot par ligne en C

Fermé
jeff - 14 déc. 2005 à 01:50
mamiemando Messages postés 33279 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 septembre 2024 - 14 déc. 2005 à 19:52
Bonjour , en C j'ai ceci :

écrire un programme qui affiche son entrée à raison de 1 mot par ligne , voici mon code :

int main(void)
{
int c;

while ((c=getchar()) != EOF)
{
if ( c == ' ')
putchar('\n');
else
putchar(c);
}
return 0;
}


ce programme marche , il me donne çà :

./a.out

salut çà baigne . ( là je tape sur entrée et j'ai çà : )
salut
çà
baigne

mais moi j'aimerais que dès que je tape ma phrase et que je tape sur la touche espace , çà passe directement à la ligne , au lieu de m'écrire la phrase entière et que ensuite en appuyant sur entrée il m'affiche un mot par ligne .
merci de votre aide

4 réponses

Salut,

Je crois que c'est l'approche qu'il faut changer.

Exemple sous vc++ :

#include <iostream>	// Charge pour les instructions cout,endl
#include <conio.h>	// Charge pour l'instruction getch()

char car=0;
char ligne=0;

int main()
{

	while ((car = getch()) != '*')
		{
		if ( car == ' ') std::cout << "\n";
		else std::cout << car;
		}
	std::cout << "\nTermine" << std::endl;
	return 0;
}



Ton code cherche la fin de ligne : ((c=getchar()) != EOF)
Sur une saisie au clavier le "Entrée" fait office de EOF.

Utilise plutôt un caractère d'arrêt.
((c=getchar()) != '*')

Lupin
0
c'est du C que je fais , pas du C++ ...
0
re:

j'avais compris !

mais pas de compilateur pour tester ta syntaxe !


int main(void)
{
int c;

while ((c=getchar()) != '*')
{
if ( c == ' ') putchar( c + '\n' );
else putchar(c);
}
return 0;
}

Lupin
0
mamiemando Messages postés 33279 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 septembre 2024 7 785
14 déc. 2005 à 19:52
De toute façon son code c++ était pas top (variables globales qui n'ont pas lieu d'être, utilisation de conio.h alors que ce n'est pas nécessaire.

Je tiens à signaler qu'en c++ un header ça s'include sans mettre .h (et si c'est un header C, on le met l'include dans un extern "C" { ...})

Ensuite je pense que le putchar( c + '\n' ); ne marchera pas car on ne concatène pas des caractères (là ont fait une somme de deux valeurs, donc un caractère qui n'a rien à voir !).

Il faut à mon avie que tu fasse un fgetc sur stdin et que tu traites s'il s'agit d'un espace, d'un retour chariot etc...

Bonne chance
0