décalage + formatage spécial d'une chaîne de caractères
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

décalage + formatage spécial d'une chaîne de caractères



  1. #1
    zanzeoo

    Question décalage + formatage spécial d'une chaîne de caractères


    ------

    bonjour a tous


    voici ce que j'essaie de faire en C embarqué (c'est un contrôle d'afficheur 7 segments ):

    Je dispose de 3 variables Float , admettons

    variable_1 = 1.25
    variable_2 = 12.3
    variable_3 = 125.7

    je les passe dans un sprintf pour en tirer 3 chaines de caractère de la manière suivante :


    sprintf(&matrix[0][0],"%05.3f",variable_3); // je suis pas sur pour le %05.3f
    sprintf(&matrix[1][0],"%05.3f",variable_2);
    sprintf(&matrix[2][0],"%05.3f",variable_1);


    Normalement après le passage dans le Sprintf j'obtiens ( en tt cas c'est ce que je souhaite) , les chaines suivantes, stockées dans le tableau a 2 dimension nommé matrix.

    01.25
    012.3
    125.7

    Ce que je voudrais faire maintenant c'est de remplacer les 0 en surplus devant le nombre par la valeur 0x0A , mais attention je souhaite quand même pouvoir écrire un jour 0.1 ou 10 et qu'il soit tabulé a droite...

    Autre chose : Comme les décimales sont incluses dans le digit d'un afficheur 7 segments , a chaque fois qu'il y a la décimale '.' je fait un OU logique entre le code du digit précédent et la valeur 0x80 , ce qui a pour but d'afficher ladite décimale sur le digit correspondant. cependant il faut donc que je décale le reste de la chaine d'un cran a la place de la '.'....

    Je vous avouerais que je ne sais pas comment m'y prendre , si quelqu'un a une idée


    MErci d'avance.

    -----

  2. #2
    Jack
    Modérateur

    Re : décalage + formatage spécial d'une chaîne de caractères

    Je ne comprends pas trop le rapport qui existe entre le contenu de l'affichage qui est constitué de codes ASCII et la valeur des digits qui sont codés en 7 segments.

    Qu'appelles-tu "la décimale"? Le point décimal de l'afficheur?

    je fait un OU logique entre le code du digit précédent et la valeur 0x80
    Non, pas un OU "logique" (opérateur ||), mais un OU "bit à bit" ou "bitwise" (opérateur |).

    Ce que je voudrais faire maintenant c'est de remplacer les 0 en surplus devant le nombre par la valeur 0x0A
    A quoi doit servir ce 0x0A? Il faut que la chaine commence par les caractères 0,x,0,A ou par la valeur 0x0A (ou 10 plus simplement)?

  3. #3
    pm42

    Re : décalage + formatage spécial d'une chaîne de caractères

    Citation Envoyé par zanzeoo Voir le message
    Ce que je voudrais faire maintenant c'est de remplacer les 0 en surplus devant le nombre par la valeur 0x0A , mais attention je souhaite quand même pouvoir écrire un jour 0.1 ou 10 et qu'il soit tabulé a droite...
    Rapidement comme ça, je ferais une boucle qui commence au 1er caractère.
    Si ce n'est pas un 0 ou si j'ai atteint l'avant-dernier caractère, je sors de la boucle
    Si c'est un 0:
    si le caractère suivant est un 0 je le remplace par 0x0A
    si le caractère suivant est autre chose que '.', je le remplace par 0x0A et je sors de la boucle

    Citation Envoyé par zanzeoo Voir le message
    Autre chose : Comme les décimales sont incluses dans le digit d'un afficheur 7 segments , a chaque fois qu'il y a la décimale '.' je fait un OU logique entre le code du digit précédent et la valeur 0x80 , ce qui a pour but d'afficher ladite décimale sur le digit correspondant. cependant il faut donc que je décale le reste de la chaine d'un cran a la place de la '.'....
    Idem : boucle jusqu'à l'avant dernier.
    Si le caractère suivant est un '.', je fais un OU binaire sur 0x80, puis je décale la suite avec un strcpy par ex.
    Sinon, je fais une boucle de l'indice + 1 jusqu'au dernier et je copie le caractère un cran plus haut.

    En pratique en C, on fait ça avec des pointeurs mais bon, il vaut mieux déjà faire marcher du code simple et lisible.
    A titre indicatif, voici le code de strcpy :

    https://opensource.apple.com/source/...bproj/strcpy.c

Discussions similaires

  1. C18 et chaine de caracteres.
    Par punky591 dans le forum Électronique
    Réponses: 11
    Dernier message: 08/10/2015, 12h03
  2. chaîne de caractères
    Par invite11df21b5 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 30/01/2013, 19h36
  3. Transformation d'une chaine de caractères
    Par anthony_unac dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 11/10/2011, 17h35
  4. Chaine de caractères en C
    Par invite953f8104 dans le forum Électronique
    Réponses: 8
    Dernier message: 03/03/2009, 20h28
  5. PIC : Chaine de caractères
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 24/05/2006, 17h49