Code ascii en C
Fermé
valgoku
Messages postés
187
Date d'inscription
lundi 17 avril 2006
Statut
Membre
Dernière intervention
22 janvier 2013
-
28 nov. 2009 à 14:34
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 2 déc. 2009 à 23:18
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 2 déc. 2009 à 23:18
A voir également:
- Code ascii en C
- Le code ascii - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
5 réponses
the F
Messages postés
150
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
22 mars 2011
13
28 nov. 2009 à 15:42
28 nov. 2009 à 15:42
Salut
Tout d'abord un caractere vide est representé par un rien pas un blanc (espace) c à d : '' -une seule cote celle du bouton 4 sur un clavier azerty .
alors , ton bout de code devient :
*********
*******************
remarque : ce code ne te laisse dans le caractere nombre que la derniere valeur saisie ,si ca ce que tu veux vas y
Tout d'abord un caractere vide est representé par un rien pas un blanc (espace) c à d : '' -une seule cote celle du bouton 4 sur un clavier azerty .
alors , ton bout de code devient :
*********
char nombre; int nb; do { printf("donner un nombre\"n); scanf("%c",&nombre); }while(nombre != ''); // Notez la correction
*******************
remarque : ce code ne te laisse dans le caractere nombre que la derniere valeur saisie ,si ca ce que tu veux vas y
valgoku
Messages postés
187
Date d'inscription
lundi 17 avril 2006
Statut
Membre
Dernière intervention
22 janvier 2013
47
2 déc. 2009 à 21:17
2 déc. 2009 à 21:17
Merci, mais j'ai toujours le meme probleme.
Il me dit : error C2137: constante caractere vide
Voilà mon code :
#include <stdio.h>
#include <stdlib.h>
int main(){
int j=0;
char lect;
printf("veuillez donner un chiffre\n");
scanf("%c",&lect);
do{
if(lect>='a' && lect<='z' || lect>='A' && lect<='Z'){
printf("Chiffres svp\n");
fflush(stdin);
scanf("%c",&lect);
}
else{
j=j*10+lect-'0';
scanf("%c",&lect);
}
}while(lect!= '');
printf("voila le chiffre : %d\n",j);
system("pause");
}
Where is the mistake ?
Il me dit : error C2137: constante caractere vide
Voilà mon code :
#include <stdio.h>
#include <stdlib.h>
int main(){
int j=0;
char lect;
printf("veuillez donner un chiffre\n");
scanf("%c",&lect);
do{
if(lect>='a' && lect<='z' || lect>='A' && lect<='Z'){
printf("Chiffres svp\n");
fflush(stdin);
scanf("%c",&lect);
}
else{
j=j*10+lect-'0';
scanf("%c",&lect);
}
}while(lect!= '');
printf("voila le chiffre : %d\n",j);
system("pause");
}
Where is the mistake ?
Pilow
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
71
2 déc. 2009 à 21:23
2 déc. 2009 à 21:23
Bonjour
PS : La fin d'une chaine est défini par '\0'
While (tructruc != '')revient a
while (tructruc)non ?
PS : La fin d'une chaine est défini par '\0'
Pilow
Messages postés
400
Date d'inscription
vendredi 2 octobre 2009
Statut
Membre
Dernière intervention
23 décembre 2009
71
2 déc. 2009 à 21:44
2 déc. 2009 à 21:44
j'aimerai que le compil sache que par exemple quand je tappe 174 et que j'arrete apres le 4, il reconnaisse un blanc, ou "rien" et me finisse mon programme.
Autant pour moi, je m'etais surtout concentré sur cette phrase et j'avais retenu qu'il cherchait la 'fin de chaine'
Autant pour moi, je m'etais surtout concentré sur cette phrase et j'avais retenu qu'il cherchait la 'fin de chaine'
valgoku
Messages postés
187
Date d'inscription
lundi 17 avril 2006
Statut
Membre
Dernière intervention
22 janvier 2013
47
2 déc. 2009 à 22:57
2 déc. 2009 à 22:57
euhhhh je pense avoir trouvé :)
il faut tout simplement mettre, enfin pour ma part ca marche : while (tructruc != '\');
Dites moi ce que vous en pensez !
il faut tout simplement mettre, enfin pour ma part ca marche : while (tructruc != '\');
Dites moi ce que vous en pensez !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
valgoku
Messages postés
187
Date d'inscription
lundi 17 avril 2006
Statut
Membre
Dernière intervention
22 janvier 2013
2 déc. 2009 à 22:59
2 déc. 2009 à 22:59
C'est pas '\' mais '\n' que tu voulais dire. Et c'est ce que j'ai dit dans mon message 7 ;-))).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
2 déc. 2009 à 22:35
2 déc. 2009 à 22:35
Salut,
Attention dans ton programme, tu mets '' au lieu de ' '. Il ne faut pas oublier l'espace à l'intérieur des deux crochets (et non guillemets).
Ensuite, pas de fflush(stdin); Ce n'est pas correct. On vide le cache à la main.
Je suis pas sûr d'avoir compris ta condition d'arrêt. Si tu veux qu'en tapant 145 il s'arrête. La condition d'arrêt sera bêtement : lettre!='\n'. Et dans ce cas, il ne faut pas vider le cache.
Sinon, au cas où, sache qu'il existe strtol qui fait ce que tu fais. Mais bon, ce que tu fais c'est un bon exercice d'entraînement. Par contre, tu peux l'améliorer encore en efficacité.
Cdlt
Attention dans ton programme, tu mets '' au lieu de ' '. Il ne faut pas oublier l'espace à l'intérieur des deux crochets (et non guillemets).
Ensuite, pas de fflush(stdin); Ce n'est pas correct. On vide le cache à la main.
Je suis pas sûr d'avoir compris ta condition d'arrêt. Si tu veux qu'en tapant 145 il s'arrête. La condition d'arrêt sera bêtement : lettre!='\n'. Et dans ce cas, il ne faut pas vider le cache.
Sinon, au cas où, sache qu'il existe strtol qui fait ce que tu fais. Mais bon, ce que tu fais c'est un bon exercice d'entraînement. Par contre, tu peux l'améliorer encore en efficacité.
Cdlt
valgoku
Messages postés
187
Date d'inscription
lundi 17 avril 2006
Statut
Membre
Dernière intervention
22 janvier 2013
47
2 déc. 2009 à 22:59
2 déc. 2009 à 22:59
J'ai rafraichi ma page trop tard ^^
Oui le \n marche !
Pour les fflush(stdin) oui je m'en doutais mais bon, je voulais un avis plus avisé.
Ensuite pour le stdtol je ne connais pas cela. Tu l'utlises comment ?
Oui le \n marche !
Pour les fflush(stdin) oui je m'en doutais mais bon, je voulais un avis plus avisé.
Ensuite pour le stdtol je ne connais pas cela. Tu l'utlises comment ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
valgoku
Messages postés
187
Date d'inscription
lundi 17 avril 2006
Statut
Membre
Dernière intervention
22 janvier 2013
2 déc. 2009 à 23:18
2 déc. 2009 à 23:18
Il s'agit de strtol et non stdol.
Voici un petit lien qui t'explique cela : http://fr.wikiversity.org/wiki/Langage_C/Fonctions_de_base/stdlib.h
Cela va certes te paraître compliqué, mais le C l'est. Si tu veux juste un code fonctionnel, tu peux en tirer la substantifique moelle : nombre=strtol(chaine, (char **) NULL, 10); //cela convertira en base 10.
Pour le fflush(stdin), le mieux est de faire une petite fonction contenant :
Cela videra le buffer clavier.
Cdlt
Voici un petit lien qui t'explique cela : http://fr.wikiversity.org/wiki/Langage_C/Fonctions_de_base/stdlib.h
Cela va certes te paraître compliqué, mais le C l'est. Si tu veux juste un code fonctionnel, tu peux en tirer la substantifique moelle : nombre=strtol(chaine, (char **) NULL, 10); //cela convertira en base 10.
Pour le fflush(stdin), le mieux est de faire une petite fonction contenant :
int c; while((c=getchar())!='\n' && c!=EOF);
Cela videra le buffer clavier.
Cdlt