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 !
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 !
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) :
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 #include <stdio.h> #include <stdlib.h> int main (void) { int i = 'a'; printf ("%d\n", i); return EXIT_SUCCESS; }
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 !
Merci pour ta réponse, mais en fait le prototype de la fonction dont j'ai besoin serait plutôt :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part int get_ascii( const char *s );
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![]()
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:
voila voila, cle en main, c'est tellement con que ca vaut pas la peine d'etre documente
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); }![]()
Je ne connais pas cette écriture (et mon compilateur non plus d'ailleurs) :
Et puis bon le poste date du 04/10/2009 je pense qu'il a dû trouver une solution depuis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 *int = *s - '0'; *int++;![]()
Salut,
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
Partager