Ich habe eine Frage über die Übergabe von Parametern über die Befehlszeile.
Mein main()
sieht wie
Wenn argv
ein Zeiger auf ein Array von Zeigern ist, weise ich init_d
zu, um auf den Wert zu zeigen, auf den der Zeiger argv
zeigt. (Wenn das überhaupt Sinn macht)
Ich gehe davon aus, dass ich diesen Wert in ein Zeichenfeld eingeben muss, um es auszudrucken, aber wenn ich die Größe der "Zeichenfolge", die ich übergebe, nicht weiß, weiß ich nicht, wie ich das erreichen soll. Zum Beispiel, wenn ich meinen Code './myprogram hallo' im Vergleich zu './myprogram alongerinput'
ausführe Sie können die Argumente drucken, ohne sie in Zeichenfelder zu übertragen. Sie sind C-Strings mit Null-Ende und printf
isst sie zum Frühstück:
Hier ist ein Beispiel, das Befehlszeilenargumente in eine einzelne Zeichenfolge konvertiert:
%Vor% argv
ist ein Zeiger auf ein Array von nullterminierten Strings. Sie müssen die Größe der Zeichenfolge nicht kennen; Sie müssen lediglich auf den Wert zeigen, da das Ende der Zeichenfolge mit einem '\ 0' angezeigt wird.
Wenn Sie die Länge der Zeichenfolge wissen möchten, können Sie strlen(argv[0])
verwenden.
Nach dem Ausführen
%Vor%(parens nicht notwendig, btw), init_d ist ein Zeiger auf ein Zeichen. In C ist eine Zeichenfolge ein Zeichenzeiger, der dem Vertrag folgt, wenn er weit genug fortgeschritten ist, wird schließlich ein Nullzeichen ('\ 0') erreicht, das das Ende der Zeichenfolge anzeigt. Mit anderen Worten, init_d ist jetzt genau die Zeichenfolge, die Sie wollen. Sie können es mit
drucken %Vor%Beachten Sie, btw, dass * argv ++ Ihnen das erste Element von argv gibt, das eigentlich der Name der Funktion in der Befehlszeile ist. Wahrscheinlich möchten Sie das erste Befehlszeilenargument, das Sie mit * ++ argv.
erhaltenTags und Links c