A voir également:
- Comparaison chaine caractère C
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Comparaison million milliard - Accueil - Technologies
- Chaine tnt gratuite sur mobile - Guide
24 réponses
comme une idote que je suis j'ai oublié de posté le code :S
le voilà:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
int main(){
int i;
char* station;
printf("station?:");
scanf("%c",& station);
printf("\n");
for(i=0;i<10;i++){
if(station==ligne1[i])
printf("station est sur ligne\n");
else printf ("station pas sur ligne");
}
return 0;
}
le voilà:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
int main(){
int i;
char* station;
printf("station?:");
scanf("%c",& station);
printf("\n");
for(i=0;i<10;i++){
if(station==ligne1[i])
printf("station est sur ligne\n");
else printf ("station pas sur ligne");
}
return 0;
}
Je n'avais pas vu que c'était en C, je n'y connais rien, mais est-ce que la variable station à été initialisée? :-)
Oui elle a été initialisée normalement puisque je demande a l'utilisateur d'entrer un nom de station.
je te remercie pour ta réponse en tout cas :)
je te remercie pour ta réponse en tout cas :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
la comparaison de chaine ne se fait pas comme ça en C, il faut utiliser strcmp inclus dans string.h
ensuite attention aux erreurs de segmentation avec tes char *
:::::::::::::::::::::::::
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
int main(){
int i;
char station[128];
printf("station?:");
scanf("%s",station);
printf("\n");
for(i=0;i<8;i++){
if(strcmp(station,ligne1[i]) == 0)
printf("station est sur ligne\n");
else printf ("station pas sur ligne");
}
return 0;
}
la comparaison de chaine ne se fait pas comme ça en C, il faut utiliser strcmp inclus dans string.h
ensuite attention aux erreurs de segmentation avec tes char *
:::::::::::::::::::::::::
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
int main(){
int i;
char station[128];
printf("station?:");
scanf("%s",station);
printf("\n");
for(i=0;i<8;i++){
if(strcmp(station,ligne1[i]) == 0)
printf("station est sur ligne\n");
else printf ("station pas sur ligne");
}
return 0;
}
en fait ça ne fonctionne pas tout a fait, ça me met "station pas sur ligne quelque soit le nom que j'entre!
hé bien maintenant quand je lance le programme j'ai un message d'erreur du type "métro.exe a cesser de fonctionner".
j'ai rien touché pourtant , sauriez vous d'ou ca peut venir?
j'ai rien touché pourtant , sauriez vous d'ou ca peut venir?
voici ce que j'ai fait et ça marche :
#include<stdio.h> #include<stdlib.h> #include<string.h> char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"}; int main(){ int i; char station[128]; printf("station ?\t"); scanf("%s",station); printf("%s\n",station); int booleen = 0; for(i=0;i<8 && !booleen;i++){ if(strcmp(station,ligne1[i]) == 0){ booleen=1; } } if(booleen){ printf("station est sur ligne\n"); } else{ printf ("station pas sur ligne");} return 0; }
Ce n'est pas parce que c'est du détail qu'il ne faut pas en tenir compte. D'autant plus que tu dis "voici ce que j'ai fait et ça marche" ... ça marche avec tes options de compilation..qui ne sont pas forcément celles de tout le monde. En faisant du code rigoureux, ça marche partout quelques soient les options.
Ce n'était pas du dénigrement mais simplement une remarque.
Ce n'était pas du dénigrement mais simplement une remarque.
ok, je te l'accorde, la prochaine fois je préviendrai sous quel OS je suis et quels sont les outils utilisés pour créer compiler, éxécuter ... enfin bref, je serai plus rigoureux ou sinon je laisserai les gens galèrer ...
Sur ce, bien que cela n'ait été qu'une remarque moi ça me saoule ce genre de remarques qui ne font pas avancer les choses
Cordialement,
moi
Sur ce, bien que cela n'ait été qu'une remarque moi ça me saoule ce genre de remarques qui ne font pas avancer les choses
Cordialement,
moi
voilà le code avec quelque modifications<;
j'ai rajouté le malloc sizeof char mais ca ne fonctionne toujours pas
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
int main(){
int i;
char* station;
station = malloc (sizeof (char));
printf("station?:");
scanf("%s",& station);
printf("\n");
for(i=0;i<8;i++){
if(strcmp(station,ligne1[i]) == 0)
printf("station est sur ligne\n");
else
printf ("station pas sur ligne");
}
system("PAUSE");
return 0;
}
j'ai rajouté le malloc sizeof char mais ca ne fonctionne toujours pas
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
int main(){
int i;
char* station;
station = malloc (sizeof (char));
printf("station?:");
scanf("%s",& station);
printf("\n");
for(i=0;i<8;i++){
if(strcmp(station,ligne1[i]) == 0)
printf("station est sur ligne\n");
else
printf ("station pas sur ligne");
}
system("PAUSE");
return 0;
}
c'est normal si tu fais un malloc(sizeof(char)), tu n'alloues qu'une case mémoire pour un char il faudrait que tu fasse malloc(UN_ENTIER_A_DETERMINER * sizeof(char)) ou UN_ENTIER_A_DETERMINER est une valeur à définir par tes propres soins et de type int.
et il ne faut pas oublier de caster ton malloc avec le type du pointeur, c'est "mieux" :
char *station = (char *)malloc(UN_ENTIER_A_DETERMINER * sizeof(char))
et il ne faut pas oublier de caster ton malloc avec le type du pointeur, c'est "mieux" :
char *station = (char *)malloc(UN_ENTIER_A_DETERMINER * sizeof(char))
char* station;
printf("station?:");
scanf("%c",& station);
Houlaaaa! Si tu veux mettre une chaine de charactère....
c'est scanf("%s",station);
expliquation:
tu déclare un pointeur (char * station)
donc pas besoin de mettre un &.
sinon oui, un strcmp fait l'affaire ;)
ça renvoie 0 si les deux chaines sont identiques.
printf("station?:");
scanf("%c",& station);
Houlaaaa! Si tu veux mettre une chaine de charactère....
c'est scanf("%s",station);
expliquation:
tu déclare un pointeur (char * station)
donc pas besoin de mettre un &.
sinon oui, un strcmp fait l'affaire ;)
ça renvoie 0 si les deux chaines sont identiques.
magnifique, ça fonctionne!!! merci daronmaster;
peux tu m'expliquer l'utilité du booleen stp?
pour le malloc je vais devoir lire un bon tuto sur son utilisation. pour l'instant je vais m'en passé puisque ta version fonctionne
peux tu m'expliquer l'utilité du booleen stp?
pour le malloc je vais devoir lire un bon tuto sur son utilisation. pour l'instant je vais m'en passé puisque ta version fonctionne
Merci bcp, je n'avais meme pas remarqué le %c!
Je vais pouvoir passer a la suite de mon programme ;)
En fait il fait que je fasse un programme qui calcule des itinéraires dans le métro parisien, mais bon je pense que vous l'aviez deviné ^^
Je vais pouvoir passer a la suite de mon programme ;)
En fait il fait que je fasse un programme qui calcule des itinéraires dans le métro parisien, mais bon je pense que vous l'aviez deviné ^^
me revoilà;
J'ai rencontré un autre problème. la il s'agit d'entrer une station de départ et une station d'arrivée.
le programme doit me dire sur quelle ligne sont chaque station; mais ça ne fonctionne pas très bien quand il faut qu'il me renvoie la station d'arrivée, parfois il me renvoie 0.
Voyez vous ce qui cloche? je sèche completement
merci
J'ai rencontré un autre problème. la il s'agit d'entrer une station de départ et une station d'arrivée.
le programme doit me dire sur quelle ligne sont chaque station; mais ça ne fonctionne pas très bien quand il faut qu'il me renvoie la station d'arrivée, parfois il me renvoie 0.
Voyez vous ce qui cloche? je sèche completement
merci
voilà le code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
char* ligne2 [8]={"nina","loise","maman","arnaud","daftpunk","digitalism","css","chemicalbrothers"};
int main(){
int i;
char depart[128];
char arrivee[128];
int booleen=0;
int dep=0;
int arr=0;
printf("station de depart?:");
scanf("%s",depart);
printf("vous partez de: %s\n\n",depart);
printf("station d'arrivee?:");
scanf("%s",arrivee);
printf("vous voulez aller a: %s\n\n",arrivee);
for(i=0;i<8 && !booleen;i++){
if(strcmp(depart,ligne1[i])==0){
dep=1;
}
else if(strcmp(depart,ligne2[i])==0){
dep=2;
}
if(strcmp(arrivee,ligne1[i])==0){
arr=1;
}
else if(strcmp(arrivee,ligne2[i])==0){
arr=2;
}
booleen = 1;
}
if(booleen){
printf("la station de depart est sur la ligne %d\n",dep);
printf("la station d'arrivee est sur la ligne %d\n",arr);
}
else{ printf ("station pas sur ligne");}
system("PAUSE");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"};
char* ligne2 [8]={"nina","loise","maman","arnaud","daftpunk","digitalism","css","chemicalbrothers"};
int main(){
int i;
char depart[128];
char arrivee[128];
int booleen=0;
int dep=0;
int arr=0;
printf("station de depart?:");
scanf("%s",depart);
printf("vous partez de: %s\n\n",depart);
printf("station d'arrivee?:");
scanf("%s",arrivee);
printf("vous voulez aller a: %s\n\n",arrivee);
for(i=0;i<8 && !booleen;i++){
if(strcmp(depart,ligne1[i])==0){
dep=1;
}
else if(strcmp(depart,ligne2[i])==0){
dep=2;
}
if(strcmp(arrivee,ligne1[i])==0){
arr=1;
}
else if(strcmp(arrivee,ligne2[i])==0){
arr=2;
}
booleen = 1;
}
if(booleen){
printf("la station de depart est sur la ligne %d\n",dep);
printf("la station d'arrivee est sur la ligne %d\n",arr);
}
else{ printf ("station pas sur ligne");}
system("PAUSE");
return 0;
}
personne ne voit ce qui ne va pas dans le code? Je ne vois pas du tout où ça coince, j'aurais besoin d'aide svp
tu utilises mal ton booleen
essaye comme ça
essaye comme ça
#include<stdio.h> #include<stdlib.h> #include<string.h> char* ligne1 [8]={"olivier","jerome","maman","papa","sisi","nana","pipi","popo"}; char* ligne2 [8]={"nina","loise","maman","arnaud","daftpunk","digitalism","css","chemicalbrothers"}; int main(){ int i; char depart[128]; char arrivee[128]; int booleen=0; int dep=0; int arr=0; printf("station de depart?:"); scanf("%s",depart); printf("vous partez de: %s\n\n",depart); printf("station d'arrivee?:"); scanf("%s",arrivee); printf("vous voulez aller a: %s\n\n",arrivee); for(i=0;i<8 && booleen<2;i++){ if(strcmp(depart,ligne1[i])==0){ dep=1; booleen++; } else if(strcmp(depart,ligne2[i])==0){ dep=2; booleen++; } if(strcmp(arrivee,ligne1[i])==0){ arr=1; booleen++; } else if(strcmp(arrivee,ligne2[i])==0){ arr=2; booleen++; } } if(booleen){ printf("la station de depart est sur la ligne %d\n",dep); printf("la station d'arrivee est sur la ligne %d\n",arr); } else{ printf ("station pas sur ligne");} system("PAUSE"); return 0; }