Rechercher : dans
Par :

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

Dernière réponse le 9 jan 2007 à 20:09:59 boitaRytm, le 7 jan 2007 à 11:58:52 
 Signaler ce message aux modérateurs

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)

Configuration: Windows XP
Firefox 1.5.0.9

Meilleures réponses pour « [C] convertir un char en int et vice versa? » dans :
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

didou, le 7 jan 2007 à 13:10:14
  • +2

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 ?

Répondre à didou

2

didou, le 7 jan 2007 à 13:16:59
  • +1

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.

Répondre à didou

3

mamiemando, le 7 jan 2007 à 14:12:38

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

Répondre à mamiemando

4

boitaRytm, le 8 jan 2007 à 20:06:45

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

Répondre à boitaRytm

5

lami20j, le 8 jan 2007 à 20:32:55

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 lami20j

Répondre à lami20j

6

 mamiemando, le 9 jan 2007 à 20:09:59

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

Répondre à mamiemando