J’essaie d’apprendre à accepter les arguments de ligne de commande et les données d’accompagnement qui suivent les indicateurs, c.-à-d.
myprogram -sampleflag datahere
Mon code est ici jusqu’ici. getopt () jette des données dans une variable c , et apparemment, vous pouvez accéder à optarg en dehors de la fonction qui a été appelée. Comment est-ce possible? Selon la page de manuel, mon code devrait fonctionner! Cependant, comme vous pouvez le voir, la sortie est (null).
#include #include #include #include int main(int argc, char *argv[]) { opterr = 0; char* cvalue = NULL; int c; char* optarg = hello; while((c = getopt(argc, argv, "ps")) != -1){ switch(c){ case 'p': cvalue = optarg; printf("cvalue is : %s\n", cvalue ); break; } } }
cvalue is : (null)
A partir du manuel :
Un caractère d’option dans cette chaîne peut être suivi de deux points («:») pour indiquer qu’il faut un argument requirejs.
Donc, dans votre cas, votre chaîne pour les options devrait être "p:s"
plutôt que "ps"
.