Partage
  • Partager sur Facebook
  • Partager sur Twitter

Découper une valeur

    27 décembre 2005 à 10:32:21

    Voilà je suis à la recherche d'un comment faire pour découper une valeur par une fonction ou par un procédé léger (je songe à quelques pratique mais ce serait trop long a coder pour trop peu.) Quesque j'entend par découper ? C'est simple : si j'ai une valeur "a5s63q" entré par un utilisateur, je voudrai pouvoir utiliser le 'a' '5' 's' '6' '3' 'q' séparement.
    (Pour plus de précision c'est pour faire un convertisseur décimal / binaire / héxadécimal.) :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 décembre 2005 à 11:05:39

      Pour ça il faut manipuler des chaînes de caractère. Pour convertir un nombre en chaîne :
      int a = 2349; /*  un int */
      char nombre[10]; /* tableau pour contenir le nombre */
      sprintf(nombre, "%d",a); /* ecrit dans le nombre */
      Et ensuite tu peux acéder à chaque chiffre avec nombre[0], nombre[1]... mais si tu connais aps encore les chaînes de caractère, attends encore un peu.

      ;)
      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2005 à 11:12:53

        Voilà je te présente une fonction (modifié) que j'avais créé pour un de mes programme ! Va voir le dernier tuto de M@teo si tu ne sais pas ce que c'est qu'une fonction..
        Cette fonction permet de saisir une chaine de caractère et de choisir le caractère d'échapement, la longueur de la chaine est limité par défaut à 100000 caractère.
        La fonction prend un paramètre, la chaine qui doit contenir ce que l'on a saisi au clavier. Elle renvoie la longueur de la chaine.
        Dites moi ce que vous en pensez au passage !

        int format(char chaine[])
        {
        unsigned char caractereLu=0;
        int j=0;
        do
        {
                   caractereLu = getchar();
                   chaine[j]=caractereLu;
                   j++;
             }
        }while (caractereLu != 4 && j<100000);

        /* ici 100000 est la longueur maximale de la chaine a ne pas dépasser. */

        /* Le 4 est le caractère d'échapement Ctrl+D à taper a la fin de la saisi.
        On peut très bien remplacer le 4 par '\n' ou tout autre caractère. */


        chaine[j]='\0'; // A la fin on rajoute le caratère NUL (important).
        return(j); // On retourne la longueur de la chaine.
        }


        EDIT : Grilled.. par une fonction que je n'ai jamais utilisé en plus ! o_O
        louisclem tes explications sont pas très clair.. :-°
        Je vais chercher de la doc sur cette fonction que je n'ai pas l'habitude d'utiliser personnelement.
        • Partager sur Facebook
        • Partager sur Twitter
        Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
          27 décembre 2005 à 11:41:52

          Je vais essayer vos deux méthodes voir laquel est la plus adapté (même si je pense que celle de louisclem est plutôt faîtes pour les calculs court, moi je prefère faire une fonction longue mais qu'on utilise simplement comme l'a fait iNaKoll.)
          >>iNaKoll: Juste pour être sûr, chaine[j]='\0'; prendra a la place de \0 le caractère que l'on veut utiliser ?
          • Partager sur Facebook
          • Partager sur Twitter
            27 décembre 2005 à 11:53:23

            La première fois que j'ai posté ma fonction, j'avais oublié le getchar ! Ca marche moins bien sans ^^
            Je ne suis pas sur d'avoir compris ta dernière question.. J'ai mis '\0' où \ est un caractère d'échappement qui introduit un code ASCII, par exemple '\65' affiche le caractère de code ASCII : 65 c'est à dire le A majuscule. En ASCII le caractère NUL est \0 et on le rajoute tout le temps à la fin d'une chaine en tant que dernier caractère, il permet à de nombreuses fonction de connaitre où se trouve la fin de la chaine de caractère. Par exemple je sais que la fonction strlen de la lib string renvoie la longueur de la chaine entrée en paramètre jusqu'à rencontrer le caractère NUL ! Si ya pas de caractère NUL c'est la cata !

            Je suis aussi débutant en C, si quelqun pouvait confirmer :-°
            • Partager sur Facebook
            • Partager sur Twitter
            Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
              27 décembre 2005 à 12:50:36

              Je confirme.
              Si tu ne mets pas le /0 alors ton prog s'arrêtera quand il en rencontrera un dans la mémoire et là c'est le drame ...
              Le C est un langage élististe, il faut toujours savoir exactement ce que l'on fait sinon on peut s'attendre à des bugs latents.
              • Partager sur Facebook
              • Partager sur Twitter

              Découper une valeur

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown