Code ascii en C
valgoku
Messages postés
187
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerai tout simplement savoir quoi mettre pour pouvoir lire un blanc dans une réponse;
par ex:
char nombre;
int nb;
printf("donner un nombre\"n);
scanf("%c",&nombre); // oui je lis chaque lettre ^^
while(nombre != "") <------ la est mon pb;
etc
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 prgramme.
Quand j'essay comme ca le compil me dit que je peux pas convertir un char en int mais moi je veux lire chaque caractere....
Je pensais au caractere ascii du "blanc" mais je ne sais pas comment l'utiliser...
J'espere que vous m'aurez compris... :)
Help à mort ^^
Thx
J'aimerai tout simplement savoir quoi mettre pour pouvoir lire un blanc dans une réponse;
par ex:
char nombre;
int nb;
printf("donner un nombre\"n);
scanf("%c",&nombre); // oui je lis chaque lettre ^^
while(nombre != "") <------ la est mon pb;
etc
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 prgramme.
Quand j'essay comme ca le compil me dit que je peux pas convertir un char en int mais moi je veux lire chaque caractere....
Je pensais au caractere ascii du "blanc" mais je ne sais pas comment l'utiliser...
J'espere que vous m'aurez compris... :)
Help à mort ^^
Thx
A voir également:
- Code ascii en C
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
5 réponses
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
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 ?
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'
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'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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