Bonjour!
Pour afficher à l'écran successivement différentes chaînes de caractères, le sprintf étant placé dans une boucle for (l'itération se fait sur j), le tout en langage C, j'emploie la technique suivante :
//Initialisation de deux pointeurs vers des chaînes de caractères :
char** eqType = NULL;
char** eqValue = NULL;
(la syntaxe convient? le compilateur me met des warnings, mais je ne sais pas comment formuler autrement)
//Initialisation des chaînes de cractères à afficher ultérieurement dans le code
char eqType1[] = "Eq off ";
char eqType2[] = "Genre ";
char eqType3[] = "3-bands";
char eqDefault[] = "error ";
char eqValue1[] = "N/A ";
char eqValue2[] = "Normal ";
char eqValue3[] = "Classic";
char eqValue4[] = "Rock ";
char eqValue5[] = "Pop ";
char eqValue6[] = "7 0 -7 ";
char eqValue7[] = "-7 0 7 ";
char eqValue8[] = "7 -7 0 ";
char eqValue9[] = "-7 7 0 ";
char eqValue10[] = "0 7 -7 ";
char eqValue11[] = "0 -7 7 ";
//Case sur les pointeurs de chaînes de caractères eqType et eqValue pour les assigner à la bonne adresse selon la position dans la boucle for
switch (j)
{
case 0:
eqType = &eqType1;
eqValue = &eqValue1;
break;
case 1:
eqType = &eqType2;
eqValue = &eqValue2;
break;
case 2:
eqType = &eqType2;
eqValue = &eqValue3;
break;
case 3:
eqType = &eqType2;
eqValue = &eqValue4;
break;
case 4:
eqType = &eqType2;
eqValue = &eqValue5;
break;
case 5:
eqType = &eqType3;
eqValue = &eqValue6;
break;
case 6:
eqType = &eqType3;
eqValue = &eqValue7;
break;
case 7:
eqType = &eqType3;
eqValue = &eqValue8;
break;
case 8:
eqType = &eqType3;
eqValue = &eqValue9;
break;
case 9:
eqType = &eqType3;
eqValue = &eqValue10;
break;
case 10:
eqType = &eqType3;
eqValue = &eqValue11;
break;
default:
eqType = &eqDefault;
eqValue = &eqDefault;
break;
}
//Affichage via une instruction sprintf
sprintf(s, "%s\t%s\t%d\t%f\t%f\t%f\t%f\n" , *eqType, *eqValue, (int) AudioFreq[i], rmsAnaAudioLevel_L[l], rmsAnaAudioLevel_R[l], rmsDigAudioLevel_L[l], rmsDigAudioLevel_R[l]);
Le code compile, me met les warnings suivants :
'char **' differs in levels of indirection from 'char (*)[8]'
Et à l''exécution je reçois des exceptions. En employant des breakpoints pour voir où se situe le problème, il semblerait que les pointeurs eqType et eqValue ne s'assignent pas correctement dans le switch (en allant voir leur valeur, j'obtiens <BadPtr> à la place). Est-ce qu'il faut les déclarer différement? Est-ce qu'il y aurait une autre méthode pour faire la même chose (j'ai essayé, sans succès en utilisant un tableau de caractères à deux dimensions, dans le but de l'afficher ligne par ligne selon la valeur de j et on ne peut pas réassigner une chaîne de caractères)?
Merci beaucoup!
Couleurs changées : le vert est réservé à la modération.
JPL
-----