Accueil > Forum > > > > Probléme avec les chaines de caractére
Probléme avec les chaines de caractére
mercredi 24 mai 2006 à 14:18:10 |
Probléme avec les chaines de caractére

Mareck666
|
Salut, Voila j'ai un gros probléme, en faite je voudrais réaliser un chatterbot en c, du genre on rentre une question dans la console et le bot nous répond, mais voila ya un probléme, lorsque je fait une condition sur une chaine entrer au clavier, soit sa quitte soit sa bug Voici un exemple du code : #include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { char var; printf("Bienvenue dans le Bots déxemple"); scanf(" %s", &var); if (var == "comment tu tapelle par exemple") { printf("\nJe mapelle bot 2"); main() } else if (var == "comment tu ...") { printf("..."); main(); } [...] return 0; }
|
|
mercredi 24 mai 2006 à 14:24:19 |
Re : Probléme avec les chaines de caractére

nightlord666
|
Réponse acceptée !
IL NE FAUT JAMAIS UTILISER == AVEC DES CHAINES DE CARACTERES !!!
== va en fait comparer l'adresse de ta chaine avec l'adresse de la chaine constante indiquée.
Solution:
Utilise strcmp(var, "comment tu tapelle par exemple"). Si strcmp renvoie 0, les chaines sont égales, sinon elles sont différentes.
|
|
mercredi 24 mai 2006 à 14:37:00 |
Re : Probléme avec les chaines de caractére

laurent1024
|
De plus char var; scanf(" %s", &var); c'est tres dangeureux, tu stocke une chaine de carcatere dans une seul char !!!!!
faut au minimim declarer un tableau (char var[500]; par exemple) pour avoir une chaine de carcartere.
|
|
mercredi 24 mai 2006 à 14:55:31 |
Re : Probléme avec les chaines de caractére

nightlord666
|
C'est vrai que le problème vient en plus de cela: tu va stocker un tableau de caractères dans un caractère, ce qui va donner un message d'erreur de windows du type la mémoire ne peut pas être "write", car scanf va utiliser un emplacement mémoire non valide.
Solution:
char var[500]; //Tableau de 500 caractères
|
|
mercredi 24 mai 2006 à 14:56:57 |
Re : Probléme avec les chaines de caractére

Mareck666
|
Merci nightlord666 et laurent1024 pour m'avoir apporter la réponce
|
|
mercredi 24 mai 2006 à 15:02:36 |
Re : Probléme avec les chaines de caractére

nightlord666
|
Réponse acceptée !
Par contre je trouve ça très mauvais de faire un main récursif, d'ailleurs je n'avais jamais vu ça ^^
Utilise plutôt while, break, continue, goto(mais très peu), car sinon au bout d'un certain nombre de commandes, la pile va être surchargée --> erreur (essaye si tu veut, j'en suis sur).
int main()
{
char done = false;
while(!done)
{
char var[500];
printf("Bienvenue dans le Bots déxemple");
scanf(" %s", &var);
if (strcmp(var, "comment tu tapelle par exemple") == 0)
{
printf("\nJe mapelle bot 2");
continue;
}
else if (strcmp(var, "comment tu ...") == 0)
{
printf("...");
continue;
}
//Exemple de break
else if(strcmp(var, "quitter") == 0)
{
break; //On quitte la boucle
}
}
return 0;
}
|
|
mercredi 24 mai 2006 à 15:04:17 |
Re : Probléme avec les chaines de caractére

nightlord666
|
En fait on n'aurait même pas besoin du done, mais c'est pour pouvoir quitter la boucle en faisant tout simplement done = true, et en executant quand même le code situé après les else if.
|
|
mercredi 24 mai 2006 à 15:11:14 |
Re : Probléme avec les chaines de caractére

Mareck666
|
Eh bien je ne savais pas que tous sa existé, quand je pense que sa fait 3 ou 4 mois que j'essaye de trouver la solution a ce probléme alors que la réponce se situer dans la librairie "strin.h", ce qui est évident ...
|
|
mercredi 24 mai 2006 à 15:17:15 |
Re : Probléme avec les chaines de caractére

nightlord666
|
Si tout le monde dit que le C++ est un des langages le plus riche(peut-être même LE plus riche), ce n'est pas pour rien.
Dans string.h, il y a aussi d'autres fonctions qui peuvent être utile dans ton cas comme:
strcat(char* src, const char* dest) pou concaténer des chaines.
strstr(const char* string, const char* searchstring) qui recherche searchstring dans string (si pas trouvé, renvoie NULL, sinon renvoie la sous-chaine(substring en anglais) qui commence par searchstring).
Pour l'explication de toutes ces fonctions : MSDN (je ne sait pas si elles sont dans la version en ligne, mais sur mon VC++ 6.0 elles y sont) ou des tutoriaux en ligne.
|
|
mercredi 24 mai 2006 à 15:21:03 |
Re : Probléme avec les chaines de caractére

nightlord666
|
Pour les continue, break :
BOUCLE <-----\
CODE |
continue -----/
CODE
break -----\
FIN DU WHILE |
CODE <-----/
|
|
Cette discussion est classée dans : printf, var, include, probléme, main
Répondre à ce message
Sujets en rapport avec ce message
Probleme avec Dev c++ (débutant) [ par MATHIS49 ]
Bonjour à tous ! Bon voila j'expose mon problème, j'ai acheté un bouquin pour apprendre le C ( le langage C par Peter Aitken et Bradley L.Lones éditi
partage de variable entre plusieurs fichiers [ par Spiffou ]
salut à tous,j'ai un ptit pb sur vc6:j'ai un prog comportant plusieurs fichiers:main.cpp // code du mainfonction.cpp // code des fonc
C++ VS Mysql [ par ours_aquatique ]
Bonjour ,Aprés une semaine de recherche infructueuse , j'ai toujours le probleme suivant:je compile sous devC++ j utilise Mysql (V4.et des poussieres)
besoin d'aide : TP école d'ingénieur [ par arbomont ]
Voici le TP que je dois rendre, et je coince sur un petit détail, pourriez vous m'aider ?Il s'agit d'un programme de communication (un chat) utilisant
Les chaines de caractère et biens d'autres problemes. Si vous voulez aider un nouveau ds l'art du C vous etes servi!!! [ par Lavieillefolle ]
Voilà voilà j'ai écris un code, enfin g tanter d'écrire et comme vous allez le constater je ne possede aucune experience. Alors si vous pourriez résou
SDL: La commande printf(""); n'affche rien! [ par yugiohjcj ]
Bonjour,voici la source de mon programme:#include #include #include #define true 1int main(int argc, char *argv[]){ printf("\a"); if ( SDL_Init
g++ & openGL [ par EricLeRouge ]
j'ai un gros soucis de compilation de fichiers en c++ avec openGL.En C tout se passe tres bien, mais en C++, rien ne va plus, expliquez moi pk voici l
Separer une chaine en sous chaine [ par firemax ]
Bonjour Je me posais une question , j'aimerais diviser une chaine en sous chaine pour pouvoir ensuite les trier par longueur de chaine de caractere
prob tableaux [ par ben3020 ]
Bonjour, je suis actuellement en train de faire un challenge et j'aimerai savoir les erreurs de mon code ( je ne veux pas de reponses juste des consei
Include "je_comprend_pas_grand_chose.h" [ par neodelphi ]
Bonjour tout le monde... C'est la première fois que je post un message ici, arf g le trac lol Bon je viend de me mettre au C++ pour me prog un jeu en
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|