ellipse : Passage d'arguments multiples (stdarg)
Bonjour,
Je cherche, tout simplement, à faire une fonction acceptant un nombre multiple d'arguments.
Je travaille sur Linux avec gcc.
Je viens de faire le "test case" suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
static void many_args(const char *string, ...) {
va_list args;
va_start(args, string);
while (string) {
puts(string);
string = va_arg(args, const char*);
}
va_end(args);
}
int main(void) {
many_args("aaa", "bbb", "ccc");
return EXIT_SUCCESS;
} |
que je compile avec la ligne de commande suivante :
Code:
gcc -Wall -pedantic -o test test.c
La compilation est ok, mais voilà le résultat obtenu :
$ ./test
aaa
bbb
ccc
AWAVI��AUATL�%�
AWAVI��AUATL�%�
����
Erreur de segmentation (core dumped)
$
Je ne comprends pas !
Est ce que quelqu'un peut m'expliquer svp ?
Merci.