Nombre de parametres variables
Bonjour,
Je cree actuellement un programme en C qui se lance sans OS, en gros il y a un boot en assembleur qui lance ce programme. Bref, je ne dispose d'aucune macro ou librairies pour mon programme. J'essai de mettre en place une fonction semblable à printf, je fais pour tester:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| void toto( char *texte, ... )
{
int position = 0;
while( texte[position] != '\0' )
{
printf ( "[%c]", texte[position] );
position++;
}
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
position++;
printf ( "(%c)(%i)", texte[position], texte[position] );
}
main()
{
toto ( "OK", "toto" );
return(0);
} |
Dans ce cas j'obtient:
Code:
[O][K](t)(116)(o)(111)(t)(116)(o)(111)( )(0)( )(0)( )(0)( )(0)(')(39)(♀)(12)
Donc j'en deduit que j'ai "OK" + caractere null + "toto" + 4 caracteres null puis du reste sans importance.
Si je change en mettant dans le main:
Code:
1 2 3 4 5
| main()
{
toto ( "OK", 5 );
return(0);
} |
ou
Code:
1 2 3 4 5 6
| main()
{
int titi = 8;
toto ( "OK", titi );
return(0);
} |
J'obtient:
Code:
[O][K]( )(0)( )(0)(')(39)(♀)(12)(↨)(23)()(7)(7)(55)(☻)(2)(↨)(23)()(7)
soit "OK" + 2 caracteres null.
Ma question, comment fait printf pour trouver la valeur de titi ? Je ne souhaite pas utiliser des macros deja faite, c'est pour cela que je n'utilise pas va_list, va_start etc...
Merci de vos reponses !