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 :

Recuperer le nombre dans une chaine de caracteres


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Points : 46
    Points
    46
    Par défaut Recuperer le nombre dans une chaine de caracteres
    Salut

    Je programme en ce momment une interface graphique avec GTK+. Dans cette interface je dispose d'un champ de saisie ou l'utilisateur entre un chiffre correspondant a une frequence. Pour recuperer ce champ GTK propose une fonction gtk_entry_get_text(GTK_ENTRY) qui est une chaine de caractere. Donc cela signifie que mon chiffre et dans la chaine de caractere

    Mon pb est que je souhaite que l'utilisateur ne rentre que des valeurs entre 20 et 3000. Le programme que j'ai ecris ne marche pas car je crois que je compare une chaine avec un nombre.

    Bref Je voulais donc savoir existe t-il un moyen de transformer ma chaine de caractere en un int qui lui aurais la valeur qui avais ds la chaine
    ex si l'utilisateur entre 56 -> j'aurais temp=56 mais ces une chaine de caractere

    moi je desir la fonction changeant temp en un int temp1=56

    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
    47
    48
    49
    50
    51
    52
     
    void copy_Entry(GtkWidget *Widget, gpointer Data)
    {    
     const gint *temp= NULL;
     FILE *fichier = NULL;
     gint selecteur;
     int Resultat;
     
     
     
     temp = gtk_entry_get_text(GTK_ENTRY(Data)); // Recuperation de la chaîne
     g_printf("%c\n", temp);
     
     Resultat=atoi("temp");
     printf("%c",Resultat);
     
     if(Data==Entry1)
     selecteur=1;
     else if (Data==Entry2)
     selecteur=2;
     
     
     switch (selecteur) // Permet de choisir dans quelle GtkEntry on se trouve
     {
     case 1: 
          if(temp<"20")
          {
          g_printf("ERROR, Frequence trop petite\n");
          gtk_entry_set_text(GTK_ENTRY(Data),"Error");
          }
          else if(temp>"3000")
          {
          g_printf("ERROR, Frequence trop grande\n");
          gtk_entry_set_text(GTK_ENTRY(Data),"Error");
          }
     
          else
          {  
          g_printf("%s\n", temp);
          fichier = fopen("fichier_data.txt","a");
                  if (fichier != NULL) // On peut lire et écrire dans le fichier
                  {
                  fprintf(fichier,"%s\n",temp);       
                  fclose(fichier); // On ferme le fichier qui a été ouvert     
                  }
                  else // On affiche un message d'erreur 
                  {
                  printf("Impossible d'ouvrir le fichier fichier_data.txt");
                  }
                  } 
     gtk_widget_grab_focus (GTK_WIDGET (Entry2)); // Permet de passer à la saisie suivante
     break;
    Merci pr vos suggestions

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    faq

    tu peux aussi utiliser sscanf.

  3. #3
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    strtol est la seule bonne fonction pour ce que tu veux car elle permet de bien gérer les erreurs de saisies des utilisateurs.

    Jc

  4. #4
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Points : 46
    Points
    46
    Par défaut
    okie merci pr les suggestions mais je viens de reparer mon erreur
    il fallait bien utilisé la fonction atoi mais moi j'ai mis des"" ce qui né pas corretc

    @++

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/05/2008, 10h54
  2. Réponses: 11
    Dernier message: 05/11/2007, 14h38
  3. [RegEx] Récupération de valeurs dans une chaine de caractères
    Par Seth77 dans le forum Langage
    Réponses: 1
    Dernier message: 09/08/2007, 09h39
  4. Recuperation d'un entier situe dans une chaine de caractere
    Par gregounnet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/07/2007, 15h41
  5. recuperer certains temes dans une chaine de caractere
    Par leviathan516 dans le forum ASP
    Réponses: 2
    Dernier message: 15/10/2004, 10h42

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