gets_s funktioniert nicht
-
_matze schrieb:
Das hier
buf[strlen(buf)] = '\r'; buf[strlen(buf)] = '\n';
macht auch wenig Sinn, oder? Du musst dich schon entscheiden, was an die Stelle soll!
Abgesehen davon: die Eingabe an sich klappt. Wenn ich deinen Code teilweise ausführe (ohne den recv-Kram), dann ist nach meiner Eingabe "ftp rgne" auch genau dieser String in buf.
Doch, das macht sehr wohl Sinn, denn nachdem '\r' angefügt wurde liefert strlen(buf) ja einen um 1 erhöhten Wert zurück. Das ist also schon richtig.
EDIT:
Bei mir steht egal was ich eingebe immer der erste Teil nicht drin.EDIT2:
Wenn ich auch nur das Code-Schnipsel ausführe, dann steht bei mir auch das richtige drin ...
-
FrEEzE2046 schrieb:
Doch, das macht sehr wohl Sinn, denn nachdem '\r' angefügt wurde liefert strlen(buf) ja einen um 1 erhöhten Wert zurück. Das ist also schon richtig.
Hehe, auch wieder wahr...
-
_matze schrieb:
FrEEzE2046 schrieb:
Doch, das macht sehr wohl Sinn, denn nachdem '\r' angefügt wurde liefert strlen(buf) ja einen um 1 erhöhten Wert zurück. Das ist also schon richtig.
Hehe, auch wieder wahr...
Es muss irgendeinen Seiteneffekt geben. Ich weiß nur nicht welchen^^. Vor allem da er bei gets_s( buf, 512 ) beim ersten Durchgang der Schleife immer einfach durchgeht ohne auf Eingabe zu warten ...
-
FrEEzE2046 schrieb:
Doch, das macht sehr wohl Sinn, denn nachdem '\r' angefügt wurde liefert strlen(buf) ja einen um 1 erhöhten Wert zurück. Das ist also schon richtig.
Die Gefahr besteht, das die abschließende 0 überschrieben wird.
-
dang0r schrieb:
FrEEzE2046 schrieb:
Doch, das macht sehr wohl Sinn, denn nachdem '\r' angefügt wurde liefert strlen(buf) ja einen um 1 erhöhten Wert zurück. Das ist also schon richtig.
Die Gefahr besteht, das die abschließende 0 überschrieben wird.
Wohl kaum, da ich das ganze Array mit '\0' gefüllt habe.
-
FrEEzE2046 schrieb:
Es muss irgendeinen Seiteneffekt geben. Ich weiß nur nicht welchen^^. Vor allem da er bei gets_s( buf, 512 ) beim ersten Durchgang der Schleife immer einfach durchgeht ohne auf Eingabe zu warten ...
Vermutlich solltest du vorher mal den Eingabepuffer leeren!
-
FrEEzE2046 schrieb:
dang0r schrieb:
FrEEzE2046 schrieb:
Doch, das macht sehr wohl Sinn, denn nachdem '\r' angefügt wurde liefert strlen(buf) ja einen um 1 erhöhten Wert zurück. Das ist also schon richtig.
Die Gefahr besteht, das die abschließende 0 überschrieben wird.
Wohl kaum, da ich das ganze Array mit '\0' gefüllt habe.
Werden 511 Zeichen eingelesen, sprengt dir die nächste Zeile dein Array.
gets_s( buf, 512 );
//cin.get( buf, 512 );
buf[strlen(buf)] = '\r';
-
_matze schrieb:
FrEEzE2046 schrieb:
Es muss irgendeinen Seiteneffekt geben. Ich weiß nur nicht welchen^^. Vor allem da er bei gets_s( buf, 512 ) beim ersten Durchgang der Schleife immer einfach durchgeht ohne auf Eingabe zu warten ...
Vermutlich solltest du vorher mal den Eingabepuffer leeren!
Und wie? Zumindest
cin.clear(); cin.ignore(MAX_INT);
führt dazu, dass er immer vorbei läuft^^.
-
cin? Du weißt schon, in welchem Forum du hier bist, oder?
-
_matze schrieb:
cin? Du weißt schon, in welchem Forum du hier bist, oder?
Ja, Ja. Im Endeffekt ist es mir gleich ob ich eine C oder C++ Lösung habe. Da es mit gets_s nicht so hinhauen möchte, bin ich auch zu cin bereit^^.
Zu mal
fflush(stdin);
auch nichts bringt