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
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
Comparez les prix

HTC Magic
Entre 429€ et 429€
|