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 :

Convertir un char* en int


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 18
    Par défaut Convertir un char* en int
    Bonjour,

    Tout d'abord je tiens à préciser que je sais que cette fonction existe dans une librairie, si je vous appel au secour c'est parce que j'essaie de la recoder !
    Voila 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include<stdio.h>
    #include<stdlib.h>
     
    int	my_strlen(char *str)
    {
      int	i;
     
      i = 0;
      while (str[i] != '\0')
        {
          i++;
        }
      return (i);
    }
     
    int	my_get_nbr(char *str)
    {
      int	res;
      int	i;
      int	multiplicateur;
     
      i = 0;
      while(str[i] != '\0')
        {
          if ((str[i]) != ('0'||'1'||'2'||'3'||'4'||'5'||'7'||'8'||'9'))
    	return (0);
          else
    	i++;
        }
      i--;
      res = (0 - '0');
      multiplicateur = (1 - '0');
      while (i >= 0)
        { 
          res = res + ((str[i] - '0') * multiplicateur);
          i--;
          multiplicateur = multiplicateur * (10 - '0');
        }
      printf("%i'\n'", res);
      return (res);
    }
     
    int	main(int ac, char **av)
    {
      my_get_nbr(av[1]);
    }
    Même sans ma condition qui apparemment bloque le programme j'avais des valeurs complétements éronées.

    Merci de m'éclairer !! Bonne soirée.

  2. #2
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 45
    Par défaut
    Hola,

    bon je suis ultra débutant en C mais j'essaye de comprendre la structure de ton code.
    Pour ma culture que signifie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    multiplicateur = (1 - '0');
    ?

    a+

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    La ligne suivante pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((str[i]) != ('0'||'1'||'2'||'3'||'4'||'5'||'7'||'8'||'9'))
        return 0;
    Tu veux que str[i] soit un chiffre, mais le code écrit compare str[i] à vrai. En effet, '0'||...||'9' est évalué à vrai.

    il aurait fallu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if((str[i] != '0') && (str[i] != '1') && ... && (str[i] != '9'))
        return 0;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(str[i] < '0' || str[i] > '9')
        return 0;
    Après, les lignes suivantes posent problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      res = (0 - '0');
      multiplicateur = (1 - '0');
          multiplicateur = multiplicateur * (10 - '0');
    Que vient faire le - '0' derrière 0, 1 ou 10 ?

    Tu peux l'enlever sans crainte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      res = 0;
      multiplicateur = 1;
      while (i >= 0)
        {
            printf("%i'\n'", res);
          res = res + ((str[i] - '0') * multiplicateur);
          i--;
          multiplicateur = 10 * multiplicateur;
        }
      printf("%i'\n'", res);
      return (res);

  4. #4
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 45
    Par défaut
    et ca veut dire quoi alors 1-'0' ?

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par FabTheGeek Voir le message
    et ca veut dire quoi alors 1-'0' ?
    Si tu a une chaine de caractères, cette astuce permet de récupérer la valeur du chiffre en question :

    Dans le code suivant, j'affiche la valeur représentée par un caractère et sa valeur (son code ascii):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int i;
    char chaine[] = "123";
     
    for(i = 0; i < 3; ++i) {
        printf("%c représente %d et a pour code décimal %d\n", 
               chaine[i], chaine[i] - '0', chaine[i]); 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1 représente 1 et a pour code décimal 49
    2 représente 2 et a pour code décimal 50
    3 représente 3 et a pour code décimal 51

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 45
    Par défaut
    ah ben merci je connaissais pas!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertir un char en int
    Par boby666 dans le forum C
    Réponses: 4
    Dernier message: 30/12/2007, 11h08
  2. Convertir un char en int
    Par Panaméen dans le forum C
    Réponses: 8
    Dernier message: 30/12/2007, 10h14
  3. [(cast)] convertir un char en int...
    Par APoLLoN1234 dans le forum C++
    Réponses: 12
    Dernier message: 15/03/2006, 23h15
  4. convertir un char en int / et prob d'espace
    Par yanchasp dans le forum C++
    Réponses: 20
    Dernier message: 07/02/2006, 19h17
  5. [Conversion]Convertir un char[] en int
    Par ThanosT dans le forum Général Java
    Réponses: 10
    Dernier message: 11/11/2005, 12h23

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