cin.getline(..., ...)
-
Muss ich das bei cin.getline(..., ...) immer so machen:
int main() { char temp[21]; //20 Zeichen + 1 Nullzeichen (0-20) cin.getline(temp,20); temp[strlen(temp)] = '\0'; cout << temp << endl; return 0; }Hängt die Funktione nicht automatisch ein Nullzeichen an? Oder hängt dass irgendwie vom Compiler....(keine Ahnung) ab, ob cin.getline(..., ...) ein Nullzeichen hinhängt oder nicht?
MfG
Stromberg
-
temp[strlen(temp)] = '\0'; ist völlig wirkungslos.
sei sucht, wo die '\0' ist und schreibt genau da eine '\0' hin.
oder hab ich mich gerade verzählt?
-
Wer sucht nach der '\0'? Und warum ist dass völlig wirkungslos? Ich verstehs grad irgendwie nicht so richtig.
MfG
Stromberg
-
strlen(temp) gibt doch den index zurück, wo die 0 steht.
-
Wenn ich jetzt bei dem Code von hier z.B. "bla bla" (Feld 0-6) Eingebe, hängt cin.getline() eine Nullstelle hinzu oder nicht? (also wäre hier temp[7] = '\0')
Richtig?MfG
Stromberg
-
-
Ja, dass hier wird wohl der Beweis sein:
int main() { const size_t SIZE = 21; char temp[SIZE]; cin.getline(temp,SIZE); short j = 0; for(char *i = temp; *i != '\0'; ++i) { cout << j << endl; ++j; } return 0; }AUSGABE:
bla bla
0
1
2
3
4
5
6Oder?
Und wenn ich in Zukunft nach dem "cin.getline()" folgende Zeile hinzufüge, ist es doch auch 100% sicher, oder wie würdest du dass machen?
if(strlen(temp) == 21) temp[SIZE-1] = '\0';MfG
Stromberg
-
Wenn du in Zukunft einfach std::string benutzt dann hast du sogar noch mehr Sicherheit

-
Klar werde ich std::string benutzen wenn ich C++ programmiere. War halt nur so aus Wissensdrang gefragt.

MfG
Stromberg