Programme - C
Fermé
Scarface030
Messages postés
11
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
17 juillet 2008
-
16 juil. 2008 à 23:05
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 juil. 2008 à 14:39
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 juil. 2008 à 14:39
A voir également:
- Programme - C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
7 réponses
mamiemando
Messages postés
33346
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 novembre 2024
7 803
17 juil. 2008 à 00:26
17 juil. 2008 à 00:26
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
Scarface030
Messages postés
11
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
17 juillet 2008
17 juil. 2008 à 00:56
17 juil. 2008 à 00:56
Ok merci beaucoup :d
Scarface030
Messages postés
11
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
17 juillet 2008
17 juil. 2008 à 01:07
17 juil. 2008 à 01:07
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 .
Scarface030
Messages postés
11
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
17 juillet 2008
17 juil. 2008 à 01:09
17 juil. 2008 à 01:09
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 juil. 2008 à 08:31
17 juil. 2008 à 08:31
oui, c'est possible, mais il faut faire les correspondances toi même.
Scarface030
Messages postés
11
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
17 juillet 2008
17 juil. 2008 à 13:52
17 juil. 2008 à 13:52
Oui sa je sais , mais j'aimerais le code qui me permette de le faire .
Merci .
Merci .
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 juil. 2008 à 14:39
17 juil. 2008 à 14:39
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.