Bonjour à tous.

je dois implementer ma propre fonction scanf en C pour un TP. cette fonction Scanf prend en compte un nombre d'arguments variables. j'ai trouve un debut de reponse avec va_list et les macro va_start, va_arg et va_end de la lib <stdarg.h> mais je n'arrive pas à les implementer correctement, si quelqu'un pourrai m'expliquer comment ca marche.

voici mon code que j'ai génére pour l'instant:

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
36
37
38
39
40
41
42
43
void scanf2(char *control, ...)
{
va_list ap;
int d;
char c, *p, *s;
char *g;
 
gets2(&g);               //recupere une chaine de caractere de l'user
 
va_start (ap, control);
while (*control)
	{
	if (control=='%')
		{
		*control ++;
		switch  (*control ++)
			{
			case 's': /* cadena */
                                // renvoi la chaine user dans l'arg ...?
				s = va_arg (ap, char *);
				printf ("chaine %s\n", s);
				break;
			case 'd':  /* entier */
                              // renvoi la chaine user  convertie en int dans l'arg ...?
				d = va_arg (ap, int);
				//d=atoi(&g);
				printf ("int %d\n", d);
				break;
			case 'c': /* caractère */
                         // renvoi la caractere user dans l'arg ...?
				c = va_arg (ap, char);
				printf ("char %c\n", c);
			break;
			}
		}
	}
//va_arg
	/*
	if (strcmp(s,"%i")==0)
		v=atoi(&c);
	//printf("%i",atoi(&c));*/
	va_end(ap);
}
la fontion doit recuperer ce que tape l'utilisateur et ly convertir (si bessoin) dans le bon type en fonction du 1er parametre passé (la chaine (%s,%i...)) pour pouvoir placer ce resultat dans le ou les parametres qui suivent.

merci pour votre aide.