Domanda

voglio fare il programma C, "animal.c".
e in guscio,
Quando digito

>animal -cat

il risultato è "meow"

>animal -dog

il risultato è "arco".
è unico modo?

void main(int argc, char **argv){
if(argv[1][0] == '-' && argv[1][1] == 'c' && argv[1][2] == 'a' && argv[1][3] == 't')
    printf("meow");
if(argv[1][0] == '-' && argv[1][1] == 'd' && argv[1][2] == 'o' && argv[1][3] == 'g')
    printf("bow");
}

in altri casi, quando voglio fare file 'cat', che individua nella "/ animale",
partendo dal presupposto che la cartella 'animale' individua già nella directory root.

     animal -cat  

il risultato è fare file "gatto" in
"/ animale" il file "cat" 's percorso assoluto è "/ animale / cat"

come fare?
c'è un altro modo per ricevere il valore dell'opzione?

È stato utile?

Soluzione

getopt è un popolare e un modo quasi standard parsing opzioni della riga di comando. Si dovrebbe usare quella (o qualcosa di simile), piuttosto che l'analisi di argomenti della riga di comando a mano. E 'tremendamente soggetto a errori.

Altri suggerimenti

Se si passa un nome di file, non si deve mettere '-' davanti ad essa. In realta '-' è un modificatore che dice 'singola opzione carattere * s follow *', '-'. È un modificatore che racconta 'l'opzione con il nome più lungo di singolo carattere segue'

Il primo passo per easen vostro dolore sarebbe quella di utilizzare strncmp invece di testare ogni carattere dell'argomento passato.

how to do ?

Per rispondere alla tua ultima domanda, è necessario usare qualcosa come mkdir in collaborazione con fopen per creare il file.

is there another way to receive option value? C'è un modo per ottenere valori "opzione" reindirizzando l'ingresso. Se tu avessi due linee nel vostro programma che aveva 2 fgets:

char name[10];
char date[9];

fgets(name,10,stdin);
fgets(date,9,stdin);

e in un file chiamato data.txt si doveva

 Bob
 04/27/11

è possibile reindirizzare l'input al vostro programma come

 myprog < data.txt

e sarebbe come si immette i valori stessi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top