IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Je cherche les codes ASCII


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Je cherche les codes ASCII
    Bonjour,

    je cherche les codes ASCII pour contrôler les nombres.

    le programme est fait en langage c

    merci pour l'aide

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Qu'appelles-tu "contrôler" les nombres ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par foot.c Voir le message
    je cherche les codes ASCII pour contrôler les nombres.

    le programme est fait en langage c
    Les "codes ASCII" ne "contrôlent" pas "les nombres". Que veux-tu faire exactement ?
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    désolée c'est un mal entendu

    voilà mon code
    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
    #include<stdio.h>
    #include<stdlib.h>
    int control_nombre(int);
    int main()
    {
    int nombre_club;
    printf("\n\ncombien du club voulez vous saisir\n\n\n");
    printf("le nombre doit être entre 1 et 50 \n");
    scanf("%d",&nombre_club);
    nombre_club = control_nombre(nombre_club);
    system("pause");
    return 0;
    }
    int control_nombre(int x)
    {
        while(x <= 0 || x > 50 )
        {
            if(x <= 0)
            {
                printf("\n\n\nerreur 1:le nombre doit etre superieur a zero \n");
                printf("Merci de re-entrer le numero du club\n");
            }
     
     
            if(x > 50)
            {
                printf("\n\n\nerreur 2:Le nombre doit etre inferieur a 50 \n");
                printf("Merci de re-entrer le numero du club\n");
            }
     
            scanf("%d",&x);
        }
     
        printf("\n\n\nSaisie ok\n\n\n");
    return x;    
    }
    je veux contrôler les nombres pour qu'elles soient juste des chifferes

    dans ce code quand je compile quand je tape une lettre il boucle infinment et même un caractère spéciaux

    merci pour l'aide et un autre désolée

    a vous relire

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par foot.c Voir le message
    je veux contrôler les nombres pour qu'elles soient juste des chifferes

    dans ce code quand je compile quand je tape une lettre il boucle infinment et même un caractère spéciaux
    scanf() est difficile à utiliser correctement. Je conseille fgets() + strtol().
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Et je me permet de rajouter que tu n'as pas besoin d'avoir une table asci pour ce que tu fais, il me semble...

    Si, comme Emmanuel Delahaye le conseille, tu utilises fgets() + strtol(), tu obtiens un entier que tu pourras tester.


    Sinon, pour complément d'info, si tu avais fais fgetc, tu aurais obtenu un caractère qu'il aurait effectivement fallu tester avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(c >= '0' && c <= '9')
    La table ascii t'aurais alors éventuellement été utile. Pour avoir la table ascii, si tu travailles sous Linux, ou Unixoide, tu peux taper man ascii.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    Bonjour à tous,

    Citation Envoyé par valefor Voir le message
    Sinon, pour complément d'info, si tu avais fais fgetc, tu aurais obtenu un caractère qu'il aurait effectivement fallu tester avec par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(c >= '0' && c <= '9')
    La table ascii t'aurais alors éventuellement été utile. Pour avoir la table ascii, si tu travailles sous Linux, ou Unixoide, tu peux taper man ascii.
    C'est juste, par contre tu es contraint de boucler 2 fois sur ta condition quand tu saisis un nombre.


    Pour info, tu as une table ascii à cette adresse.

    Salut
    Stay in touch

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    merci a vous

    Theirry m'a corrigé le programme

    le voilà

    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
    50
    51
    52
    53
    54
    #include <stdio.h>
    #include <stdlib.h>
     
    void purge(void)
    {
        int c;
     
        while ((c = fgetc(stdin)) != '\n' && c != EOF)
        {
        }
    }
     
    long saisir_entier(char const *message, long min, long max)
    {
        long ret;
        int err;
     
        do
        {
            int c;
            err = 0;
     
            if (message != NULL)
            {
                printf("%s ", message);
                fflush(stdout);
            }
     
            if (scanf("%ld", &ret) != 1)
            {
                err = 1;
            }
     
            c = getchar();
            if (c != '\n' && c != EOF)
            {
                err = 1;
                purge();
            }
        }
        while (err != 0 || ret < min || ret > max);
     
        return ret;
    }
     
    int main(void)
    {
        int nombre_club;
     
        nombre_club = saisir_entier("le nombre doit être entre 1 et 50 :", 1, 50);
        printf("Le nombre saisi vaut %d\n", nombre_club);
     
        return 0;
    }
    il y a quelque truc pas compris

    si vous pouvez me l'explique volontaire .

    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void purge(void)
    {
        int c;
     
        while ((c = fgetc(stdin)) != '\n' && c != EOF)
        {
        }
    }
    je n'ai pas réussi à la comprendre

    2.jamais vu que ça veux dire

    3.pour quoi on a déclaré ces deux variable

    4.a vous relire

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((c = fgetc(stdin)) != '\n' && c != EOF)
    -La fonction fgetc() sur stdin te sert à lire un caractère saisi au clavier (si stdin a sa valeur par défaut).

    -(c = fgetc(stdin)) sert à 2 choses: en premier, tu affectes à c la valeur lue par fgetc(), en deuxième, à récupérer cette valeur pour la tester, ce qui te permet de tester c dans la suite de ta condition (dans c != EOF par exemple).
    donc quand tu testes (c = fgetc(stdin)), c'est comme si tu testais c sauf qu'à ce moment précis, il n'a pas la valeur que tu souhaites, donc il vaut mieux évaluer l'expression.

    -'\n': saut de ligne (sous-entendu, tu considères que la touche 'ENTER' qui est représenté par le caractère '\n' doit être considéré comme une fin de saisie).

    -EOF: fin de fichier. Effectivement, je trouve cela curieux de tester EOF sur stdin, sachant qu'EOF n'a pas de code ASCII...si l'auteur du code veut bien m'expliquer ça serait sympa
    Stay in touch

  10. #10
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par foot.c Voir le message
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void purge(void)
    {
        int c;
     
        while ((c = fgetc(stdin)) != '\n' && c != EOF)
        {
        }
    }
    je n'ai pas réussi à la comprendre
    cette fonction sert à vider le buffer d'entré (généralement le buffer du clavier).

    Citation Envoyé par foot.c Voir le message
    2.jamais vu que ça veux dire
    cette fonction sert à vider explicitement le buffer de sortie (généralement le buffer de l'écran), on s'en sert surtout quand un printf() ne se termine pas par '\n'.

    Citation Envoyé par foot.c Voir le message
    ret est la variable retournée à la fonction appelante, et err sert à gérer les erreurs dans la fonction.

    Citation Envoyé par oLie93 Voir le message
    [CODE]
    -EOF: fin de fichier. Effectivement, je trouve cela curieux de tester EOF sur stdin, sachant qu'EOF n'a pas de code ASCII...si l'auteur du code veut bien m'expliquer ça serait sympa
    EOF correspond généralement à -1, on peut l'insérer via Ctrl+d.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    EOF correspond généralement à -1, on peut l'insérer via Ctrl+d.
    OK...mais sur quel OS ? Linux je présume..
    Sur mon windows un Ctrl+D vaut 4. Comment obtenir le -1 ?!
    Stay in touch

  12. #12
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par oLie93 Voir le message
    OK...mais sur quel OS ? Linux je présume..
    Sur mon windows un Ctrl+D vaut 4. Comment obtenir le -1 ?!
    ça doit être Ctrl+z
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    ça doit être Ctrl+z
    Effectivement

    Merci pour cette précision
    Stay in touch

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par oLie93 Voir le message
    -EOF: fin de fichier. Effectivement, je trouve cela curieux de tester EOF sur stdin, sachant qu'EOF n'a pas de code ASCII...si l'auteur du code veut bien m'expliquer ça serait sympa
    EOF n'est pas la 'fin de fichier', mais le code retourné par le fonction de lecture fgetc() quand une fin de lecture se produit. Cette fin de lecture peut être provoquée par :
    • une erreur de lecture
    • la fin de fichier

    Pour en revenir à ta question, il ne faut pas oublier que stdin est un flux, et qu'il peut être redirigé à partir d'un fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * monappli < mescommandes.txt
    un EOF peut donc bien se produire, donc le cas est prévu.
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 97
    Points
    97
    Par défaut
    Effectivement, merci pour ces ultimes précisions
    Stay in touch

Discussions similaires

  1. Fichier contenant tous les codes ASCII
    Par jfdruine dans le forum Unix
    Réponses: 5
    Dernier message: 08/07/2010, 13h33
  2. Petit utilitaire pour retrouver les codes ascii des fontes
    Par ProgElecT dans le forum Vos contributions VB6
    Réponses: 0
    Dernier message: 26/07/2007, 22h52
  3. Je Cherche Les Codes Sources D'un Erp
    Par acipeg dans le forum Forum général ERP
    Réponses: 7
    Dernier message: 22/03/2007, 16h04
  4. Affichier les codes Ascii
    Par sebhm dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/05/2006, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo