Programme - C
Scarface030
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 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
A voir également:
- Programme - C
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
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 :
ce qui donne après compilation :
En C pur :
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
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 .
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
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.
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.