Bonjour à tous !
Je dois réaliser un programme en c et comme vous pouvez vous en douter j'ai un petit problème!
C'est un programme qui doit converser avec l'utilisateur (type chatterbot en très simplifié) à propos d'un thème; j'ai choisi de le faire autour des voitures :il y aurait par exemple quatre types de voitures référencées, avec pour chacunes plusieurs options dispo.
Cependant je reste bloqué depuis plusieurs jours sur la fonction qui permet de faire la conversation... j'ai refait un essai à part en plus petit pour essayer d'y voir plus clair et de comprendre d'où vient l'erreur, que je vous soumet :
L'idée c'est que le logiciel demande à l'utilisateur de poser une question (ici ça sera une question du type: combien de voitures différentes avez-vous ?), il découpe ensuite celle-ci en token avec strtok et les compare aux mots clés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX 100 int main(void) { char question[MAX]; char phrase[MAX]="Nous avons trois types de voitures disponibles"; char phrase2[MAX]="Nous avons plusieurs couleurs disponibles !"; char cle1[MAX]="voitures"; char cle2[MAX]="couleurs"; char *token; char **tok; int nombre =0,i; printf("Bonjour ! \n\n je vais vous guider dans votre rechercher de voitures ! \n\n"); printf("Sam : Et si vous commenciez par poser une question : \n\n"); getchar(); fgets(question,100,stdin); // le dernier caractère est à strlen(c->phrase)-1 c->phrase[strlen(c->phrase)-1]='\0' question[strlen(question)-1]='\0'; token=strtok(question, " "); while(token != NULL) { strcpy(tok[nombre],token); nombre++; token=strtok(NULL, " "); } for (i=0; i<nombre;i++) { if (strcmpi(cle1, tok[i])==0) { printf("Sam : %s", phrase); } else if (strcmpi(cle2, tok[i])==0) { printf("Sam : %s", phrase2); } } return 0; }
Il n'y a pas d'erreurs à la compilation mais quand j'éxécute et que je pose la question ça plante...
Est-ce que vous voyez d'où vient l'erreur ?
Merci par avance de votre aide!! (je précise que je débute un peu en c^^)
Partager