le opzioni della riga di comando modo creano i file
-
22-10-2019 - |
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?
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.