if(string==string) in C???

N

Nuuk

Aktives Mitglied
Thread Starter
Dabei seit
13.04.2003
Beiträge
289
Reaktionspunkte
2
Ich arbeite gerade an nem programm für studium in der ich zwei strings mittels bsp:

If("hallo"=="hallo")

vergleiche.
ich hab das vorhin in der main gemacht, da funktionierte das ganze wunderbar.
dann hab ich das ganze auf verschiedene module aufgteilt. (schön mit header dateien usw.) funktioniert auch alles wunderbar, nur dieses IF funktioniert nicht mehr. wenn ich das if mit int füttere geht es.
nun meine Frage: Ist vielleicht an dieser Vorgehensweise zu schauen ob zwei strings gleich sind was falsch, und das geht nur mit stringcompare aus der string.h??
wer kann mir mal schnell helfen?
 
Du brauchst strcmp.
 
also string==string ist böse?!?
 
Strings in C sind in Zeiger auf Character-Arrays, also vom
Typ "char*"

Der == Operator vergleicht nur die Addressen dieser Zeiger, die müssen
für Strings mit gleichem Inhalt aber keinesfalls gleich sein.

Das oben erwähnte strcmp vergleicht zwei Character-Arrays zeichenweise
und liefert 0, wenn es kein Unterschied gibt,

du musst also sowas wie

if (strcmp(str1, str2) == 0) {
...
}

machen.

Gruß!
 
Nuuk schrieb:
also string==string ist böse?!?

Böse nicht. Aber wie ai-freak gesagt hast, vergleichst Du damit die Adressen der beiden Strings, nicht die Inhalte. Manchmal will man auch die Adressen vergleichen, aber in diesem Fall sicher nicht.

Alex
 
vielen vielen dank für die gute erklärung ai-freak.
wenn man das dann so liest, denkt man sich wieder: eigentlich hätt ich das doch selbst wissen müssen :-/
 
Nuuk schrieb:
wenn man das dann so liest, denkt man sich wieder: eigentlich hätt ich das doch selbst wissen müssen :-/

Ach weisst du, auf diese Gemeinheit mit dem Stringvergleichen ist wohl jeder C-Programmierer schon mal reingefallen ;-)
 
das beruhigt immerhin ein bisschen.
am anfang macht man ja eh die unmöglichsten fehler. wenn man sich da so zurückerinnert, wie man letztes semester mit den printfs gekämpft hat. :D und jetzt läuft das wie von selbst. dann wird das schon noch.. :)
 
Zurück
Oben Unten