Ich habe Probleme, zwei Charaktere zu vergleichen. Ich habe ein sehr einfaches C-Problem geschrieben, um Befehlszeilenargumente auszuprobieren.
Hier ist mein Code so weit:
%Vor%Also wenn ich das in das Terminal tippe:
%Vor%Ich bekomme das als Ausgabe:
%Vor%Die Ausgabe fehlt Informationen über das Geschlecht, es sollte ein Mädchen sein, seit ich f eingegeben habe. Aber ich habe versucht, durch printf ("% i", Geschlecht) zu überprüfen, die den Wert 0 gab. Ist g == 'f' die falsche Art, zwei Zeichen zu vergleichen?
gender
ist ein char*
, d. h. ein Zeiger auf den ersten Zeichensatz einer Zeichenkette. Wenn Sie das mit einem einzelnen char
vergleichen, werden sowohl der char
als auch der Zeiger in Ganzzahlen konvertiert und ein Ganzzahlvergleich durchgeführt.
Um Strings zu vergleichen, verwenden Sie strcmp
von <string.h>
:
Beachten Sie das doppelte Anführungszeichen ( "
), das eine Zeichenfolge und kein einzelnes Zeichen angibt.
Das Problem besteht darin, dass Sie eine Zeichenfolge (oder besser: char*
) mit einer char
vergleichen. Dieser Vergleich (d. H.% Co_de%) vergleicht den Rohzeigerwert mit dem Zeichen, anstatt den Inhalt der Zeichenkette mit dem Zeichen zu vergleichen. Stattdessen müssen Sie den Zeiger dereferenzieren und dann diesen Wert oder Index mit der Zeichenfolge vergleichen, d. H.% Co_de%.
Natürlich ist es auch eine gute Idee zu überprüfen, ob die Zeichenfolge tatsächlich etwas enthält, bevor Sie das versuchen, um einen segfault zu vermeiden.