Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

ich hab folgenden code,


char strname[8];

file->ReadString(strname, 9);



	if(strname=="WERT_BER")

	{

		...

	}

aber obwohl offensichtlich in strname der Wert "WERT_BER" drinnen steht (per Debugger überprüft), komm ich nicht in den Aufruf von if rein.

Muss ich da beim Vergleich irgendwie anders vorgehen?!:confused:

Wer weiß Hilfe?!

Technician

Geschrieben

Also, zum ersten würde ich sagen steht in Deinem Array nicht wirklich 'WERT_BER' wenn es ein char [8] ist! An einem String ist meines Wissen nach am Ende immer ein Nullzeichen. Das würde zum Beispiel erklären warum er den Vergleich nicht macht.

Ich benutze zum Vergleichen immer den Befehl strcmp! Unter Windows kann man auch _stricmp benutzen was nicht auf Gross- und Kleinschreibung achtet. Aber nur unter Windows.

Bine

Geschrieben

wenn ich schreib


char strname[8];

file->ReadString(strname, 9);



	if(strcmp(strname, "WERT-BER"))

	{

		...

	}


trotz "Gebetsmühlen-Beachtung"

geht's aber auch nicht...

auch nicht bei "WERT-BER\0" oder irgendwas...

:confused:

Geschrieben
Originally posted by Technician

wenn ich schreib



char strname[8];

file->ReadString(strname, 9);



	if(strcmp(strname, "WERT-BER"))

	{

		...

	}


trotz "Gebetsmühlen-Beachtung"

geht's aber auch nicht...

auch nicht bei "WERT-BER\0" oder irgendwas...

:confused:

Das passt eigentlich alles bis auf eines, das er wieder nicht in den IF-Zweig reinläuft da bei einer Übereinstimmung 0 rauskommt was dann ein FALSE ist also eher eine "!" davor oder

gleich auf " == 0 " prüfen.

Frank

Geschrieben

Wie meine Vorgänger schon gesagt haben, muss in deine Zeile noch ein == 0 rein. strcmp ist eine Funktion, wenn Du so willst. Sie überprüft einen String Zeichenweise. Es gibt die Option == 0, >0 und <0.

Wenn Du mehr Informationen dazu haben willst, dann schau Dir diese Seite mal an - ist fast so aufgebaut wie die in der MSDN (welche ich Moment nicht habe, weil unser firmeninterner Server down ist).

Dein Code müsste so aussehen:

...char strname[8];

file->ReadString(strname, 9);



	if(strcmp(strname, "WERT-BER")==0)

	{

		...

	}

Bine

Geschrieben

Denke ich auch! Aber sie ließt das ganze durch eine Funktion ein mit der ich noch nie gearbeitet habe, und ich weiss nicht wie die das handhabt! Vielleicht braucht diese Funktion kein Nullzeichen am Ende! Komisch finde ich das allerdings auch!

Bine

Geschrieben

Vielleicht wird das 'R' auch nicht mehr verglichen da strcmp von dem array ja schon ein endzeichen bekommen hat.

Es ist aber noch ein Fehler drin glaub ich: mit ReadString werden 9 Zeichen eingelesen, es dürften aber bei der Feldgröße nur 7 sein!

Geschrieben

@BikerJoe

Nene...das ReadString liest maximal 9 Zeichen ein, so wie das hier gemacht ist.

Real liests aber in diesem Fall nur 7 Zeichen ein und haengt als 8. ne Null an, da das Array ja nicht groesser ist.

Da nun der Vergleichsstring 8 Zeichen hat, wird man in dem hier beschriebenen Fall so nie in das IF kommen.

Goos

Geschrieben
Originally posted by Guybrush Threepwood

Ich weiß nicht, wäre schon etwas seltsam aber wenn das Array nur 8 Zeichen groß ist

und das Wort komplett drinsteht.:(

Ist aber so. CStdioFile::ReadString weiß nicht, wie groß der Puffer wirklich ist, und muss sich auf die Angabe des Programmierers verlassen. Wenn der sagt, dass der Puffer 9 Bytes groß ist, dann liest ReadString (maximal) 8 Zeichen, und hängt ein Nullzeichen dran. Dass dieses dann aber außerhalb des allokierten Speichers steht, ist natürlich ein Fehler des Programmierers, der fatale Folgen haben kann.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...