Programme - C
Scarface030
Messages postés
11
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir, je ne suis pas très fort en programmation , et je cherche a faire un programme en C
qui puisse par exemple quand on tape un mot sa sort un autre mot ou phrase .
( "Si j'écris sa , Alors sa écris sa" ) , est ce possible ? Si oui, votre aide serait la bienvenue .
Merci et Bonne soirée
qui puisse par exemple quand on tape un mot sa sort un autre mot ou phrase .
( "Si j'écris sa , Alors sa écris sa" ) , est ce possible ? Si oui, votre aide serait la bienvenue .
Merci et Bonne soirée
Configuration: Windows XP Firefox 3.0
7 réponses
-
Oui c'est possible, en C ou en C++. Dans les deux cas il suffit d'utiliser getline().
En C++ c'est le plus facile :#include <iostream> #include <string> int main(){ std::string buffer; std::cout << "tapez une phrase et appuyez sur 'entrée'" << std::endl; std::getline(std::cin,buffer); std::cout << "vous avez tapé " << buffer << std::endl; return 0; }
ce qui donne après compilation :tapez une phrase et appuyez sur 'entrée' j'aime les tapirs vous avez tapé j'aime les tapirs
En C pur :#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> int main(){ unsigned buffer_size = 255; char *buffer = (char *)malloc(buffer_size*sizeof(char)); // allouer le buffer printf("tapez une phrase et appuyez sur 'entrée'\n"); getline(&buffer,&buffer_size,stdin); printf("vous avez tapé %s",buffer); free(buffer); // libérer le buffer return 0; }
Tu noteras qu'en C c'est un peu plus compliqué car il faut allouer un buffer et faire le #define qui va bien, comme indiqué quand tu cherches "man getline" sur google :
http://man.developpez.com/man3/getline.3.php
Le buffer est sensé être agrandi si la chaîne lue est plus grande (cf man). Par contre il faut bien penser à le désallouer quand on n'en a plus besoin.
Attention : l'utilisation d'un scanf (en C) ou de l'opérateur >> sur std::cin (en C++) n'extrait que le premier mot de la phrase, car un espace est considéré comme un séparateur de chaîne.
Bonne chance -
-
Mamiemando, en fait la ça me réécris ce que je viens d'écrire , c'est pas exactement sa que je veux c'est par exemple si on tape le titre d'une chanson , sa m'écrive le titre , ou par exemple si on écrit " salut ça va ? " sa écrive " oui et toi ? "
Merci . -
Oups, je me suis tromper dans une phrase : " si on tape le titre d'une chanson , sa m'écrive le titre " >>> si on tape le titre d'une chanson , sa m'écrive l'artiste .
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
oui, c'est possible, mais il faut faire les correspondances toi même.
-
Oui sa je sais , mais j'aimerais le code qui me permette de le faire .
Merci . -
et ben, il y a plusieurs choix, tu peux utiliser des map je crois, ou des tableaux :
std::vector<std::string> cores[2];
tu rempli cores en mettant la phrase à comprendre dans la case 0 du tableau et la phrase à écrire dans la case 1;
for(int i=0;i<cores[0].size();++i)
if(cores[0][i]==buffer)
{ std::cout<<cores[1][i];break; }
Le plus fastidieu étant maintenant de taper les correspondances.