Frage

Ich möchte C -Programm "Animal.C" machen.
und in Shell,
Wenn ich tippe

>animal -cat

Das Ergebnis ist "miau"

>animal -dog

Das Ergebnis ist "Bogen".
Ist es nur so?

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 einem anderen Fall, wenn ich eine Datei 'Katze' erstellen möchte, die in "/Animal" lokalisiert wird,
Angenommen, das Ordner "Tier" befindet sich bereits im Wurzelverzeichnis.

     animal -cat  

Das Ergebnis ist, die Datei "Katze" in "/Animal" zu machen
Der absolute Pfad von Datei "Cat" lautet "/Tier/Katze"

wie macht man ?
Gibt es eine andere Möglichkeit, den Optionswert zu erhalten?

War es hilfreich?

Lösung

Getopt ist eine beliebte und fast Standard -Möglichkeit, Befehlszeilenoptionen zu analysieren. Sie sollten diese (oder ähnliche) nicht an die Befehlszeilenargumente von Hand analysieren. Es ist enorm fehleranfällig.

Andere Tipps

Wenn Sie einen Dateinamen bestehen, sollten Sie nicht vor ihm setzen. Eigentlich '-' ist ein Modifikator, der 'einzelne Zeichenoption* s* folgen', '-' ein Modifikator, der 'Option mit dem Namen länger als ein einzelner Zeichen folgt'.

Der erste Schritt, um Ihren Schmerz zu erobern, wäre die Verwendung von STRNCMP, anstatt jeden Charakter des bestandenen Arguments zu testen.

how to do ?

Um Ihre letzte Frage zu beantworten, müssen Sie so etwas wie verwenden Mkdir in Verbindung mit Fopen zum Erstellen der Datei.

is there another way to receive option value?Es gibt eine Möglichkeit, "Option" -Werte zu erhalten, indem die Eingabe umgeleitet wird. Wenn Sie zwei Zeilen in Ihrem Programm hatten, die 2 FGets hatten:

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

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

und in einer Datei namens Data.txt, die Sie hatten

 Bob
 04/27/11

Sie können die Eingabe in Ihr Programm wie möglich umleiten

 myprog < data.txt

Und es wäre, als würden Sie die Werte selbst eingeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top