Avatar billede spg10 Nybegynder
24. juni 2004 - 17:29 Der er 14 kommentarer og
1 løsning

navn - gør noget

jeg har lige et spørgsmål.
kan man lave et program hvor man f.eks skriver info.exe -r
og så skriver det f.eks hallo
info.exe er programmet.
Avatar billede arne_v Ekspert
24. juni 2004 - 17:31 #1
Ja...

Men hvorfor skulle -r betyde hallo ?
Avatar billede spg10 Nybegynder
24. juni 2004 - 17:38 #2
det behøves det heller ikke.
Avatar billede arne_v Ekspert
24. juni 2004 - 17:41 #3
#include <stdio.h>
#include <string.h>

int main(int argc,char *argv[])
{
  if(argc>1 && strcmp(argv[1],"-r")==0)
  {
      printf("hallo\n");
  }
  else
  {
      printf("ikke hallo\n");
  }
  return 0;
}
Avatar billede segmose Nybegynder
24. juni 2004 - 17:44 #4
#include <stdio.h>
#include <string.h>

int main(int argc,char *argv[])
{
  if(argc>1 && strcmp(argv[1],"-r")==0)
  {
      printf("hallo %s\n", argc[0]); // ikke alle OS overholder at argc er programmet.
  }
  else
  {
      printf("ikke hallo\n");
  }
  return 0;
}
Avatar billede spg10 Nybegynder
24. juni 2004 - 17:44 #5
vil du ikke være sød at beskrive denne linie
  if(argc>1 && strcmp(argv[1],"-r")==0)
Avatar billede segmose Nybegynder
24. juni 2004 - 17:45 #6
skulle være argv[0]
    printf("hallo %s\n", argv[0]); // ikke alle OS overholder at argc er programmet.

argc er argument count og argv er argument value, argc fortæller hvor mange entries der er i argv.
Avatar billede arne_v Ekspert
24. juni 2004 - 17:47 #7
if(argc>1 && strcmp(argv[1],"-r")==0)

hvis der er mere end selve programnavnet på kommando linien
og
det første argument efter programnavnet er "-r"
Avatar billede arne_v Ekspert
24. juni 2004 - 17:51 #8
segmose>

Det C99 draft jeg har en kopi af siger:

If the value of argc is greater than zero, the string pointed to by argv[0]
represents the program name; argv[0][0] shall be the null character if the
program name is not available from the host environment. If the value of argc is
greater than one, the strings pointed to by argv[1] through argv[argc-1]
represent the program parameters.

hvilket jeg læser som at enhver compliant C compiler skal putte "-r" i argv[1]
og bare lade argv[0] være tom hvis program nvanet ikke er tilgængeligt.

Jeg tror aldrig at jeg har oplevet en C compiler som ikke puttede program
i argv[0], men der skal nok være nogen !
Avatar billede spg10 Nybegynder
24. juni 2004 - 17:53 #9
c eller c++
Avatar billede arne_v Ekspert
24. juni 2004 - 17:54 #10
Den kode skulle compile fint både som C og C++.
Avatar billede segmose Nybegynder
24. juni 2004 - 18:50 #11
arne>
Så vidt jeg husker var der nogle af de tidlige compilere / operativ system der ikke reporterede program navnet rigtigt i argv[0], jeg kunne forstillge mig programmer der køre fra prommer hvor der så ikke er noget operativ system og derfor heller ikke nogen program navn.
Avatar billede arne_v Ekspert
24. juni 2004 - 18:59 #12
Lyder meget plausibelt.
Avatar billede arne_v Ekspert
24. juni 2004 - 18:59 #13
Og et svar
Avatar billede spg10 Nybegynder
25. juni 2004 - 06:52 #14
jeg kan kun få den til at skrive ikke hallo
Avatar billede spg10 Nybegynder
25. juni 2004 - 07:05 #15
nu virker det
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