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:
Dans ce cas j'obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Donc j'en deduit que j'ai "OK" + caractere null + "toto" + 4 caracteres null puis du reste sans importance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part [O][K](t)(116)(o)(111)(t)(116)(o)(111)( )(0)( )(0)( )(0)( )(0)(')(39)(♀)(12)
Si je change en mettant dans le main:
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 main() { toto ( "OK", 5 ); return(0); }
J'obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 main() { int titi = 8; toto ( "OK", titi ); return(0); }
soit "OK" + 2 caracteres null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part [O][K]( )(0)( )(0)(')(39)(♀)(12)(↨)(23)()(7)(7)(55)(☻)(2)(↨)(23)()(7)
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 !
Partager