Avatar billede dank Nybegynder
26. oktober 2003 - 19:26 Der er 5 kommentarer

problemer med at parse input fra commandline

Jeg har sakset lidt rundt omkring fra nettet og prøver og sætte noget sammen der kan tage en parameter fra commandline med switch -h

Her kommer programmet:

#include <stdio.h>
#include <unistd.h>


void usage(void)
{
  fprintf(stderr, "print some usage info\n\n");
}

int main(int argc, char *argv[])
{

  int c;
  char *host = NULL;

  while((c = getopt(argc, argv, "h")) != -1)
    {
      switch(c)
        {

          case 'h':
          host = optarg;
          break;

        default:
          usage();
          return 0;
        }
    }

  printf ("Du havde i -h foelgende:");
  printf ("%s",host);

}

Det kompiler fint, men ouput bliver f.eks.:

# ./test -h abc
Du havde i -h foelgende:(null)

Nogen der kan se hvad jeg gør galt?
Avatar billede bertelbrander Novice
26. oktober 2003 - 19:39 #1
Linien:
while((c = getopt(argc, argv, "h")) != -1)
Skal laves om til:
while((c = getopt(argc, argv, "h:")) != -1)
Avatar billede bertelbrander Novice
26. oktober 2003 - 19:40 #2
Og så skal du putte en

return 0;

ind til slut i main.

Nogle gcc compilere (f.ex cygwin) har getopt() defineret i getopt.h
Avatar billede dank Nybegynder
26. oktober 2003 - 19:44 #3
tak det virker. opretter du svar? Har kun rodet med C idag, så kunne ikke lige selv finde problemet.

Undrer mig iøvrigt over at den "godtager"

program -

men ikke

program -A

Burde den ikke kalde usage(); hvis ikke f.eks. -h er sandt?
Avatar billede bertelbrander Novice
26. oktober 2003 - 19:50 #4
Jeg kender ikke getopt() det er en gcc-specifik funktion.
Jeg søgte blot på google og fandt:

http://www.hmug.org/man/3/getopt.html

Da du er nybegynder i C har du nok mere brug for points end mig.
Avatar billede arne_v Ekspert
27. oktober 2003 - 08:42 #5
getopt er så vidt jeg ved POSIX.

D.v.s. at den findes på alle systemer som er POSIX compliant
(hvilket for de mest kendte platforme betyder alle ikke
Microsoft operativ systemer).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester