/** @brief Display mode menu indexes */
enum
{
INDEX_MODE_AUTO, /*!< Automatic mode */
INDEX_MODE_FULL, /*!< Full mode */
INDEX_MODE_CLOSE, /*!< Closed mode */
INDEX_MODE_MESSAGE, /*!< Message mode */
INDEX_MODE_OFF, /*!< Mode off */
INDEX_MODE_NB /*!< Number of options in display mode menu */
};
/** @brief Display mode menu texts */
extern const unsigned char * const AREA_DISPLAY_MENU_TEXT[INDEX_MODE_NB];
Voici comment j'ai défini mes deux lignes qui seront mise en place me permettant d'afficher les états de mes zones : (%s afin de spécifier que je souhaite afficher une chaine de caractère correspondant à l'état de la zone en question) :
/** @brief Areas state menu indexes */
enum
{
AREAS_STATE_MENU_1_2, /*!< state of area 1 and 2 text */
AREAS_STATE_MENU_3_4, /*!< state of area 2 and 3 text */
AREAS_STATE_MENU_NB /*!< Number of texts of the area state screen */
};
/** @brief Areas state menu texts */
extern const unsigned char * const AREAS_STATE_MENU_TEXT[AREAS_STATE_MENU_NB];
Et voici ma fonction d'affichage ou je place l'état de mes zones dans des buffers grâce à la fonction sprintf me permettant d'afficher le buffer directement sur la ligne souhaitée :
Tout d'abord je déclare mes buffers, avec comme taille la longueur maximum de digit de mon afficheur.
Ensuite j'effectue une boucle me permettant de déterminer l'état de ma zone[index] (donc zone[1], zone[2], zone[3] ou zone[4]), selon l'état je donne une valeur différente à ma variable stringResult.
Ensuite j'utilise la fonction sprintf, je place dans le buffer ceci (pour le premier sprintf) :
(unsigned char *)"1 : %s 2 : %s"
C'est ensuite que je n'arrive pas à faire ce que je souhaite, mon objectif est d'afficher tel ou tel état de ma zone en question, c'est à dire vérifier que ma variable stringResult == tel valeur et en fonction afficher tel ou tel état à mon premier %s et tel ou tel état selon stringResult à mon deuxième %s.
La condition ternaire que j'utilise fonctionne mais n'est pas ce que je souhaite faire car ici je ne met que deux état possible, je ne fait qu'une vérification d'une zone également il faudrait peut être que je refasse également une boucle pour pouvoir vérifier les 4 zones etc.. mais je ne sais pas comment m'y prendre !
Merci d'avance pour votre aide, j’espère avoir était claire.
- Edité par Arrgon 13 juillet 2018 à 12:58:55
Pour réussir dans la vie, il y a deux choses essentielles : 1- Ne jamais révéler tout ce que l'on sait
c'est normal, stringResult[4] est un tableau(si tu veux c'est un pointeur qu'on peux pas changer) et pas un pointeur, toi ce qu'il de faut c'est un simple pointeur genre :
char *stringResult = NULL;
stringResult = str5;
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mais dans mon sprintf comment je fais pour vérifier la valeur souhaitée.
Par exemple si je souhaite connaitre params.areas[3].areaMode et que j'utilise un pointeur comme ceci : stringResult = str5; je vais placer dans stringResult le résultat de areaMode, cependant étant donné que j'ai réalisé une boucle sur toutes les possibilités de areas (donc je récupère les valeurs de chaque zone et les met dans stringResult)
Les variables suivantes sont placés dans le pointeur stringResult
params.areas[0].areaMode
params.areas[1].areaMode
params.areas[2].areaMode
params.areas[3].areaMode
Mais dans mon sprintf lorsque je souhaite afficher l'état de params.areas[0].areaMode et params.areas[1].areaMode je fais comment pour récupérer ces valeurs la de mon pointeur stringResult ?
C'est pour ça que j'avais pensé à faire un tableau ou j'enregistrer à l'emplacement de l'index du tableau l'état de la zone mais de cette manière là j'ai l'erreur comme je vous disait :/
- Edité par Arrgon 16 juillet 2018 à 15:22:03
Pour réussir dans la vie, il y a deux choses essentielles : 1- Ne jamais révéler tout ce que l'on sait
Multiples condition dans un sprintf?
× 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.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub