Calcul de la taille d'une chaine à la compilation C
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Calcul de la taille d'une chaine à la compilation C



  1. #1
    jojo150393

    Calcul de la taille d'une chaine à la compilation C


    ------

    Bonjour à tous,
    je programme en C sur des microcontrôleurs STM32 (juste pour info sans importance pour mon problème) avec l'IDE Keil ARM et son compilateur associé "The ARM Compiler V5".

    Dans mon programme, j'ai besoin de comparer des chaines de caractère avec des constantes que je garde dans des #defines.
    Je compare avec la fonction strcnmp et, au lieu de spécifier à la main le paramètre "n", j'aimerais que le compilo le face pour moi. (Facile puisque c'est une constante il a juste a calculer le nombre de caractère).

    J'ai cherché du coté des pragma mais j'ai pas réussi à en trouver un utile.

    Une solution ?

    -----
    Dernière modification par jojo150393 ; 13/10/2016 à 17h27. Motif: Orthographe

  2. #2
    Jack
    Modérateur

    Re : Calcul de la taille d'une chaine à la compilation C

    Mais en principe, le paramètre "n" ne doit pas correspondre à la taille de la chaîne mais à celle du tableau hébergeant la chaîne. Du coup, à moins que tu ne travailles avec des tableaux dynamiques, tu dois connaitre cette taille puisque c'est celle correspondant à la taille du tableau.

    A+

  3. #3
    inviteb9f49292

    Re : Calcul de la taille d'une chaine à la compilation C

    Tu es sûr que le compilateur ne remplace pas un strlen("MYSTR") par sa valeur à la compile ou à l'édition de lien? La plupart le font.
    Sinon tu peux essayer en déclarant ta chaîne en tableau et utilisant sizeof qui doit être résolu à la compil:
    Code:
    char const string[] = "une chaine";
    #define STATIC_STRLEN(str) ( sizeof(str)/sizeof((str)[0]) - 1 ); // -1 car \0 est compté

  4. #4
    polo974

    Re : Calcul de la taille d'une chaine à la compilation C

    Citation Envoyé par jojo150393 Voir le message
    Bonjour à tous,
    ...

    Une solution ?
    oui mais non, enfin, il faut voir...

    suppose que tu fasses:
    #define TOTO "toto"

    puis plus loin :

    char s[] = "toto est un garçon";

    et bien
    strncmp( TOTO, s, strlen(TOTO)))
    te rendra 0 car il y a égalité sur les 4 premiers caractères de 2 chaînes différentes ! ! !

    c'est peut-être ce que tu cherches, mais je pense qu'il fallait le dire...

    si tu cherches vraiment à comparer les 2 chaînes, soit :
    • tu prends un n arbitrairement grand,
    • tu prends le max des strlen,
    • tu testes les strlen avant le strncmp.

    genre :
    (strlen(s) == strlen(TOTO)) && (0 == strncmp( TOTO, s, strlen(TOTO)))
    qui renvoie 1 si égalité
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura
  6. #5
    jojo150393

    Re : Calcul de la taille d'une chaine à la compilation C

    Ok merci bien je vais tester tous ça

Discussions similaires

  1. Calcul de taille de fondation
    Par bird12358 dans le forum Bricolage et décoration
    Réponses: 8
    Dernier message: 10/03/2016, 14h50
  2. Réponses: 6
    Dernier message: 16/04/2013, 21h07
  3. taille de la chaine carbonée et couleur
    Par mav62 dans le forum Chimie
    Réponses: 1
    Dernier message: 10/01/2013, 11h36
  4. Calcul de la taille d'une couronne
    Par invite799e046f dans le forum Physique
    Réponses: 14
    Dernier message: 18/06/2012, 12h02
  5. Calcul taille IPN, calcul de charge
    Par invite22ae5754 dans le forum Technologies
    Réponses: 19
    Dernier message: 24/09/2008, 14h33