|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Probléme avec les chaines de caractére [ Divers / Débutant(e) ] (Mareck666)
Informations & options pour cette discussion
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é 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC Touch HD
Entre 25€ et 605€
|