Bonjour à tous !
Voilà le prototype de la fonction que j'ai écrite :
Code :
- char * extract_options(char **args_list, char *valid_options);
|
Sans entrer dans les détails (ce n'est pas ça l'important), la fonction parcours args_list et repère les options (qui commencent par '-') valides, et renvoie la chaine contenant toutes les options trouvées, et NULL si une option était invalide.
Pour parcourir args_list, j'ai fait comme ceci :
Code :
- for (int n = 0 ; *args_list != NULL ; args_list++)
|
Ça marche très bien, mais je me demande ce qu'il se passerait si il y avait en mémoire quelque chose juste après args_list, c'est à dire, une fois qu'il a incrémenté args_list pour la dernière fois (normalement) si il peut il y avoir autre chose que NULL. En gros est-il possible d'avoir un débordement mémoire ?
Pour tester cette fonction, dans main j'envoie argv+2 et argv[1] comme arguments.
Si comme premier argument j'envoie quelque chose comme :
Code :
- char *args_list[4] = {"-abc", "arg", "-x", NULL};
|
Alors là je sais qu'il n'y aura pas de problèmes, mais il faut que la fonction puisse fonctionner dans le cas où NULL n'est pas explicitement écrit à la fin.
D'avance merci pour vos éclaircissements.
Message édité par swilmet le 11-06-2009 à 16:27:54