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

Bibliothèque standard C Discussion :

char* to char


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Par défaut char* to char
    Bonjour,

    Existe-t-il une fonction qui prend en entrée une chaîne de caractères contenant une constante caractère et retourne le code ascii correspondant ?

    Par exemple :
    "'\n'" -> 10
    "'a'" -> 97
    ...

    Merci !

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut



    Non il n'existe pas de fonction qui retourne une telle valeur mais tu peux les avoir très facilement (un exemple parmis tant d'autres) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main (void)
    {
       int i = 'a';
       printf ("%d\n", i);
     
       return EXIT_SUCCESS;
    }
    Une fonction possible faite à la va-vite:

    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
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int get_ascii (const char c)
    {
       return c;
    }
     
     
    int main (void)
    {
       printf ("%d\n", get_ascii ('a'));
       return EXIT_SUCCESS;
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Par défaut
    Merci pour ta réponse, mais en fait le prototype de la fonction dont j'ai besoin serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int get_ascii( const char *s );
    Il s'agit d'un analyseur lexical, je lis dans un fichier la chaîne "'\n'" par exemple et je dois retrouver le type du token (ici CST_CHAR pour constante caractère) ainsi que sa valeur ('\n' -> 10).

    Je voulais juste savoir si une telle fonction existait déjà, une sorte de atoi() qui reconnaît aussi des constantes caractères...Mais apparemment non

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut
    Bon allez, comme je suis un gentil garcon je vais te pondre ton code
    En fait, le tout tiens a une simple recuperation de la valeur ascii de chaque conteneur de ton tableau... C'est vraiment tout bete:
    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
     
    /*
    ** Pour afficher un caractere
    */
    void        my_putchar(char c)
    {
        write(1, &c, 1);
    }
     
    /*
    ** renvoi un la valeur ascii du char * 
    ** quand celui ci ne contient qu'un 
    ** seul element.
    */
    int            get_ascii(const char *s)
    {
        int        ascii_code;
     
        ascii_code = s[0] - '0';
        return (ascii_code);
    }
     
    /*
    ** renvoi un a un les valeurs ascii 
    ** d'une chaine dans un tableau d'int
    */
    int            *get_ascii(const char *s)
    {
        int        *int_tab;
     
        while (*s != NULL)
            {
               *int = *s - '0';
               *int++;
               *s++;    
            }
         return (int_tab);
    }
    voila voila, cle en main, c'est tellement con que ca vaut pas la peine d'etre documente

  5. #5
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Je ne connais pas cette écriture (et mon compilateur non plus d'ailleurs) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    *int = *s - '0';
    *int++;
    Et puis bon le poste date du 04/10/2009 je pense qu'il a dû trouver une solution depuis

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par ziete Voir le message
    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
     
    /*
    ** renvoi un a un les valeurs ascii 
    ** d'une chaine dans un tableau d'int
    */
    int            *get_ascii(const char *s)
    {
        int        *int_tab;
     
        while (*s != NULL)
            {
               *int = *s - '0';
               *int++;
               *s++;    
            }
         return (int_tab);
    }
    voila voila, cle en main, c'est tellement con que ca vaut pas la peine d'etre documente
    Sauf que ton dernier exemple est faux.

    Jc

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par j0o0 Voir le message
    Merci pour ta réponse, mais en fait le prototype de la fonction dont j'ai besoin serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int get_ascii( const char *s );
    Il s'agit d'un analyseur lexical, je lis dans un fichier la chaîne "'\n'" par exemple et je dois retrouver le type du token (ici CST_CHAR pour constante caractère) ainsi que sa valeur ('\n' -> 10).

    Je voulais juste savoir si une telle fonction existait déjà, une sorte de atoi() qui reconnaît aussi des constantes caractères...Mais apparemment non
    A vrai dire, je crains qu'il ne reste un problème auquel tu n'a pas pensé...

    Typiquement, un char const * peut, bien sur, représenter un caractère unique, mais il peut, surtout, représenter... une chaine de caractères, comme "bonjour\0"...

    Dés lors, il faudrait peut être se poser la question de savoir quelle valeur ASCII tu veux récupérer

    La valeur du premier caractère, quoi qu'il arrive
    la valeur du dernier caractère avant le '\0'
    ou, peut, être, tout simplement, la valeur d'un caractère dont il faudrait préciser la position
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. pb conversion unsigned char vers char *
    Par FamiDoo dans le forum C
    Réponses: 11
    Dernier message: 24/08/2006, 18h11
  2. Comparer 2 Char / Convertir Char -> Int
    Par mbk-w dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/06/2006, 11h09
  3. unsigned char* to char*
    Par xela2000 dans le forum MFC
    Réponses: 4
    Dernier message: 20/11/2005, 16h07
  4. conversion char wide char
    Par ep31 dans le forum MFC
    Réponses: 4
    Dernier message: 15/11/2005, 08h14
  5. Pb Invalid Conversion "char" to "char*"
    Par kazarn dans le forum C++
    Réponses: 3
    Dernier message: 02/03/2005, 13h24

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