Das Vergleichen des Befehlsparameters mit argv [] funktioniert nicht

7

Ich versuche den Befehlsparameter mit argv [] zu vergleichen, aber es funktioniert nicht. Hier ist mein Code.

%Vor%

In der Hauptfunktion

%Vor%

Aber das funktioniert nicht ... Ich weiß nicht, warum dieser Vergleich nicht funktioniert.

    
itsaboutcode 29.07.2010, 17:59
quelle

4 Antworten

23

Sie können Zeichenketten nicht mit == vergleichen. Verwenden Sie stattdessen strcmp .

%Vor%

Der Grund dafür ist, dass der Wert von "..." ein Zeiger ist, der die Position des ersten Zeichens in der Zeichenkette darstellt, wobei der Rest der Zeichen dahinter steht. Wenn Sie "-d" in Ihrem Code angeben, wird eine ganz neue Zeichenfolge im Speicher erstellt. Da die Position der neuen Zeichenfolge und argv[1] nicht identisch sind, gibt == 0 zurück.

    
Adrian 29.07.2010, 18:02
quelle
9

In C ++ lassen Sie std :: string die Arbeit für Sie:

%Vor%

In C musst du strcmp verwenden:

%Vor%     
Mark B 29.07.2010 18:09
quelle
2

Sie können strcmp hier verwenden.

    
Brandon Horsley 29.07.2010 18:02
quelle
-4

wird das nicht sein:

%Vor%

0 nicht 1 ?

    
Viper_Sb 29.07.2010 18:01
quelle

Tags und Links