[Langage C]Chaîne de caractères...
Résolu/Fermé
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
-
5 oct. 2008 à 21:59
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 - 5 oct. 2008 à 23:56
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 - 5 oct. 2008 à 23:56
A voir également:
- [Langage C]Chaîne de caractères...
- Caractères ascii - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux - Guide
- Plus de chaine tv - Guide
8 réponses
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 22:07
5 oct. 2008 à 22:07
Ouais, normal, c'est un des inconvénient du scanf() pour une chaîne de caractère : on peut pas
utilise gets() tu pourras
au passage, ce n'est pas :
char NomDeLaChaine[50];
scanf("%s", &NomDeLaChaine);
mais :
char NomDeLaChaine[50];
scanf("%s", NomDeLaChaine);
utilise gets() tu pourras
au passage, ce n'est pas :
char NomDeLaChaine[50];
scanf("%s", &NomDeLaChaine);
mais :
char NomDeLaChaine[50];
scanf("%s", NomDeLaChaine);
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 22:11
5 oct. 2008 à 22:11
De la même manière sauf que tu n'as même pas à indiquer le type.
char NomDeLaChaine[50];
gets(NomDeLaChaine);
char NomDeLaChaine[50];
gets(NomDeLaChaine);
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
5 oct. 2008 à 22:09
5 oct. 2008 à 22:09
D'accord, mais comment fonctionne la fonction gets?
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
5 oct. 2008 à 22:16
5 oct. 2008 à 22:16
J'ai essayé de modifier
scanf("%s", &util);
scanf("%s", &adversaire);
scanf("%s", &OHV);
par
gets(util);
gets(adversaire);
gets(OHV);
Mais là, le programme accepte le premier prénom et saute ensuite le deuxième...
Voici le code actuel :
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
char util[10], choix, adversaire[10], choix2, OHV[35], choix3;
do{
printf("\nComment vous appelez-vous?\t");
gets(util);
printf("\nVous vous appelez donc %s ? (O=Oui, N=Non)\t", util);
scanf("%s", &choix);
if(choix=='O' && choix!='N')
{
printf("\nD'accord, votre nom est donc ");
}
}while(choix=='N');
printf("%s !\n\n", util);
do{
printf("\nLe nom de votre rival?\t\t");
gets(adversaire);
printf("\nVotre rival est donc %s ? (O=Oui, N=Non)\t", adversaire);
scanf("%s", &choix2);
if(choix2=='O' && choix2!='N')
{
printf("\nAh mais oui, c'est ");
}
}while(choix2=='N');
printf("%s votre rival!\n\n", adversaire);
do{
printf("\nEt ou habitez-vous?\t\t");
gets(OHV);
printf("\nVous habitez donc a %s ? (O=Oui, N=Non) ?\t", OHV);
scanf("%s", &choix3);
if(choix3=='O' && choix3!='N')
{
printf("\nVous etes donc ");
}
}while(choix3=='N');
printf("%s, de %s !\n\n\n", util, OHV);
system("PAUSE");
return EXIT_SUCCESS;
}
scanf("%s", &util);
scanf("%s", &adversaire);
scanf("%s", &OHV);
par
gets(util);
gets(adversaire);
gets(OHV);
Mais là, le programme accepte le premier prénom et saute ensuite le deuxième...
Voici le code actuel :
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
char util[10], choix, adversaire[10], choix2, OHV[35], choix3;
do{
printf("\nComment vous appelez-vous?\t");
gets(util);
printf("\nVous vous appelez donc %s ? (O=Oui, N=Non)\t", util);
scanf("%s", &choix);
if(choix=='O' && choix!='N')
{
printf("\nD'accord, votre nom est donc ");
}
}while(choix=='N');
printf("%s !\n\n", util);
do{
printf("\nLe nom de votre rival?\t\t");
gets(adversaire);
printf("\nVotre rival est donc %s ? (O=Oui, N=Non)\t", adversaire);
scanf("%s", &choix2);
if(choix2=='O' && choix2!='N')
{
printf("\nAh mais oui, c'est ");
}
}while(choix2=='N');
printf("%s votre rival!\n\n", adversaire);
do{
printf("\nEt ou habitez-vous?\t\t");
gets(OHV);
printf("\nVous habitez donc a %s ? (O=Oui, N=Non) ?\t", OHV);
scanf("%s", &choix3);
if(choix3=='O' && choix3!='N')
{
printf("\nVous etes donc ");
}
}while(choix3=='N');
printf("%s, de %s !\n\n\n", util, OHV);
system("PAUSE");
return EXIT_SUCCESS;
}
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 22:23
5 oct. 2008 à 22:23
pourtant chez moi ça passe ...
en même temps je viens de voir que tu n'inclues pas stdio.h, peut-être en est-ce la raison
en même temps je viens de voir que tu n'inclues pas stdio.h, peut-être en est-ce la raison
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
5 oct. 2008 à 22:27
5 oct. 2008 à 22:27
Oui, en fait je démarre les programmes console avec DevC++, des fois il me charge les librairies <cstdlib> et <iostream>, d'autres fois <stdio> et <stdlib>... Mais en rajoutant les deux, rien à faire, le problème est le même... Voilà le résultat :
https://imageshack.com/
https://imageshack.com/
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 22:32
5 oct. 2008 à 22:32
Oui je vois le genre de "bug" que tu as, j'ai déjà eu... avc le scanf pas avec le gets
as-tu bien remplacé tous les scanf("%s", ...) par gets(...) ?
ça m'étonne aussi de voir des #include sans le .h, à vrai dire je n'ai jamais essayé peut être que ça fonctionne
#include <stdio.h>
int main()
{
char m[50];
char n[50];
char o[50];
printf("m : ");
gets(m);
printf("n : ");
gets(n);
printf("o : ");
gets(o);
printf("m:%s\nn:%s\no:%s\n", m, n, o);
system("pause");
}
je te parle avec ça à côté pour vérifier ce que je dis ..
as-tu bien remplacé tous les scanf("%s", ...) par gets(...) ?
ça m'étonne aussi de voir des #include sans le .h, à vrai dire je n'ai jamais essayé peut être que ça fonctionne
#include <stdio.h>
int main()
{
char m[50];
char n[50];
char o[50];
printf("m : ");
gets(m);
printf("n : ");
gets(n);
printf("o : ");
gets(o);
printf("m:%s\nn:%s\no:%s\n", m, n, o);
system("pause");
}
je te parle avec ça à côté pour vérifier ce que je dis ..
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
5 oct. 2008 à 22:39
5 oct. 2008 à 22:39
De toute façon ceci est ce que j'ai mis dans mon code corrigé... Ce bug m'étonne (pour ne pas dire m'énerve...).
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 22:43
5 oct. 2008 à 22:43
essaye en incluant :
#include <stdio.h>
avec le .h
ça m'intrigue tout ça, je ne vois pas d'autre possibilité de raison de divergence que ça..
#include <stdio.h>
avec le .h
ça m'intrigue tout ça, je ne vois pas d'autre possibilité de raison de divergence que ça..
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
5 oct. 2008 à 23:02
5 oct. 2008 à 23:02
Je l'ai déjà fait...
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 23:13
5 oct. 2008 à 23:13
bah jvois pas ... jpense pas qça soit les options du compilateur même si c'est pas impossible
t'as essayé de copier-coller mon bout de code entièrement pour tester ?
t'as essayé de copier-coller mon bout de code entièrement pour tester ?
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
5 oct. 2008 à 23:56
5 oct. 2008 à 23:56
Ton code marche parfaitement... Je vais essayer de refaire à zéro mon programme en utilisant uniquement des gets et on verra bien... En attendant je file ! Bye et merci ;)