Les Allergies
Alimentaires
Posez votre question Signaler

[C] convertir un char en int et vice versa?

boitaRytm 14Messages postés 7 janvier 2007Date d'inscription - Dernière réponse le 9 janv. 2007 à 20:09
bonjour tout le monde
je debute en C et j'aimerais savoir s'il ya pas une fonction qui permet de convertir un caractère en un entier et inversement, un peu du mem genre que "atoi"
si oui merci de me donner la syntaxe bien expliquée avec :)
merci d'avance
(une reponse d'ici ce soir ca serait genial)
Lire la suite 

[C] convertir un char en int et vice versa »

6 réponses
Réponse
+2
moins plus
Sais-tu qu'il n'y a pas de typage fort en C ?
Cela veut dire que tu peux te servir d'une variable de type char comme si c'était un int :
c'est à dire que tu peux utiliser les opérateurs de comparaisons, arithmétique, logique.

Si par contre, tu as besoin de mixer operandes de type int avec d'autres de type int, convertit-les dans le type du résultat attendu.
Exemple:

{
int i;
resultat;
char c1,c2;
i=2;
c1=100;
c2=100;
resultat=(int) c1*(int) c2+i;
}

En effet, si la conversion n'est pas réalisée avant d'effectuer la *, le résultat intermédiaire est stocké dans une variable temporaire de type char et dans notre cas, ne suffit pas à stocker le résultat dans son intégralité (il faut 2 octets. Le type char tient sur 1 !!)
Le résultat intermédiaire est tronqué et la variable intermédiaire ne stocke que les bits les moins significatifs.
Le résultat final sera faux.
Bien sûr, le langage C ne le signale pas par défaut. Peut-être qu'une option de compilateur peut permettre de le signaler ou l'outil lint.
Je te conseille à ce propos d'utiliser lint, qui t'aidera à débugger tes programmes. C'est très formateur et t'évitera peut-être de t'user les yeux devant l'écran et les bouquins.

D'autres langages comme Ada, réalise une vérification systèmatique de la concordance des types dans les expressions et les affectations, à la compilation et controle les débordements à l'exécution.
Ceux qui ont développé en Ada, ont tous connu, l'exception Ada : Constraint error.

Donc, voilà, pour répondre à ta question :

pour convertir, un char en entier : (int) <operande char>.

De facon générale : (type) <operande>.

où type peut être : int, char, long, unsigned, ... et toute combinaison.
où operande peut être : constante, variable, expression.

Voilà, voilà, a+.

P.S: Amuse-toi bien.
Tu apprends le C pour faire quoi, si c'est indiscret ?
didou - 7 janv. 2007 à 13:16
Oups, mais tu auras corrigé de toi-même, dans l'exemple, j'ai mal déclaré, la variable résultat : ajouter int devant résultat, ligne 3.

Sinon, ça pourrait pas compiler.

sinon, une fois déclarée, laisser la ligne 3 telle quelle, n'a aucun effet sinon de forcer le compilateur à signaler que cette instruction n'a pas d'effet.
Ajouter un commentaire
Réponse
+1
moins plus
bon bah merci pour vos reponses, meme si j'ai pas vraiment capté grand chose. En fait je débute vraiment vraiment en C, je suis en 1ere année informatique ca fait 4 mois qu'on programme en C, donc je suis meme pas arrivé aux fonctions tout ca.
J'ai quand meme quelques notions puisque j'ai fait une année de Pascal pour le bac l'année derniere.

Enfin bref tout ca pour dire que ce forum a l'air d'une bonne adresse mais que je suis encore a un niveau trèc bas :)

a bientot
Ajouter un commentaire
Réponse
+0
moins plus
Non c'est juste les fonctions fscanf (lecture dans un fichier) , scanf (lecture sur l'entrée standard) ou sscanf (lecture dans une chaine). Exemple :
#include <stdio.h>
#include <string.h>

int main(){
  char *buffer="69";
  int x;
  if (sscanf(buffer,"%i",&x)==1){
    printf("x=%i\n",x);
  }else{
    printf("Ne peut pas lire la valeur\n");
  }
  return 0;
}

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

En fait je débute vraiment vraiment en C,

Alors fait un tour ici Apprenez a programmer en C et ici cours, exercices, solutions en C
Ajouter un commentaire
Réponse
+0
moins plus
Il faut lire les manuels des différentes fonction et tu verras c'est très simple : dans une console linux ou dans google tape :
man sscanf
man printf

http://www.linux-france.org/article/man-fr/man3/scanf-3.html

Bonne chance
Ajouter un commentaire
Ce document intitulé « [C] convertir un char en int et vice versa? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?