16. maj 2013 - 16:03Der er
10 kommentarer og 1 løsning
Om anvendelse af argv i switch, og hvordan man overfører den til en funktion
Hej Eksperter
Jeg har et program hvor man skal tilføje 2 argumenter argv[1] argv[2].
Indtil nu har jeg brugt tal, og så giver det jo ingen problemer i et switch statement. Jeg skal bare skrive switch (atoi(argv[1]))
Nu er der virkelig mange muligheder for argv[1] og der vil sikkert komme flere i fremtiden, så jeg ville gerne for overskuelighedens skyld vælge på en tekst. F.eks. hvis argv[1] er lig med "open" at jeg så kan skrive case: "open".
Men jeg kan jo ikke skrive switch (argv[1]) da argv[1] er en pointer. Istedet må jeg lave en lang række af else if (!strcmp("transaction",argv[1])), og det ser ikke særlig overskueligt ud.
Endnu mere kompliceret bliver det hvis argv[1] = "admin" for så er der yderlig mange muligheder for værdien af argv[2].
Derfor ville jeg også gerne have en funktion i a la function case_admin(argv[2]) som varetager denne specielle situation. Men hvordan overfører man argv[2] i funktionen?
Kender nogen en måde til at gøre en streng til et unict tal?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg har faktisk allerede en defineret typedef enum ADMIN_E { ADMIN_ENDOFDAY = 1, ... ... ... } FLX_ADMIN_FUNCTION;
Disse er trods alt ret sigende for hvilken funktion det er. Mit problem har bare været at jeg ikke kender tricket til hvordan jeg vælger FLX_ADMIN_FUNCTION admin_func = ADMIN_END_OF_DAY
hvis argv[2] = "ADMIN_END_OF_DAY"
El. mere generelt
Hvordan jeg får lavet argv[2] om til en konstant af typen FLX_ADMIN_FUNCTION
OK - Jeg slipper ikke for if else if else if else ... Der findes altså ikke noget trick hvormed man kan bruge en tekststreng som nøgleværdi i et array som kan i PHP.
I PHP ville jeg jo bare have lavet et array $func = array( "ADMIN_END_OF_DAY" => 1, ... )
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.