Wie liest man "Zeichenfolge" aus dem Befehlszeilenargument in C?

7

Ich habe eine Frage über die Übergabe von Parametern über die Befehlszeile.

Mein main() sieht wie

aus %Vor%

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     
mike 18.02.2011, 20:10
quelle

6 Antworten

13

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:

%Vor%     
David Heffernan 18.02.2011, 20:14
quelle
4

Hier ist ein Beispiel, das Befehlszeilenargumente in eine einzelne Zeichenfolge konvertiert:

%Vor%     
Ari Malinen 06.08.2013 17:02
quelle
3

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.

%Vor%

Wenn Sie die Länge der Zeichenfolge wissen möchten, können Sie strlen(argv[0]) verwenden.

    
Marlon 18.02.2011 20:18
quelle
2

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.

erhalten     
charleyc 18.02.2011 20:17
quelle
2
%Vor%

Wenn Ihr Programm myProg ist, dann hat myProg hello in der Befehlszeile argc = 2 (einschließlich Programmname), argv [0] ist "myProg" und argv [1] ist "hallo"

    
Cratylus 18.02.2011 20:14
quelle
0

Sie können die Zeichenfolge, auf die Sie mit init_d zeigen, mit

ausgeben %Vor%

"% s" gibt alle Zeichen des Strings aus, bis ein '\ 0' erreicht ist. In C sind Strings null-terminiert.

    
Fox32 18.02.2011 20:17
quelle

Tags und Links