Char Array ohne Terminator
-
Hi Leute,
bin neu hier und so viel Ahnung von C++ hab ich leider auch nicht (mehr). Ich muss für eine Studienarbeit ein Gerät über eine TCP-Verbindung ansteuern. Das geschieht über Ansteuerungscodes.
Mein Problem ist, wenn ich einen char array über cin.getline oder sonstwie fülle, habe ich ja immer einen Terminator '\0' mit dabei, was ich aber nicht gebrauchen kann. Ich sitz hier jetzt schon paar Stunden und bekomm es einfach nicht hin den Terminator aus dem Array zu bekommen.char sendbuf[256], a[256] cout <<endl<<"Sende: "; cin.getline (sendbuf, 256); int i; for (i=0; sendbuf[i] != '\0'; i++){} strncpy (a, sendbuf, i); int z; for (z=0; a[z] !='\0'; z++){} cout<<z;Müsste das hier nicht eigentlich funktionieren? Ich finde im array a aber immer wieder einen Terminator, obwohl ich doch mit strncpy den Terminator garnicht mit kopiere, ich blicks iwie net
.
Wäre froh, wenn mir da jemand helfen könnte
-
Wenn du schon C++ nimmst warum benutzt du überhaupt so einen low-level-C-Kram? Nimm doch einfach einen std:string und du hast diese Probleme nicht mehr.
-
1. Warum ist das überhaupt ein Problem? Die Sendefunktion nimmt doch sowieso eine Länge, oder?
2. Was ist den vorher in a? Vermutlich unitialisierte Werte, womöglich eben Nullzeichen. Die sind nach dem strncpy immer noch hinter der Kopie.
3. std::string? Wobei das nicht wirklich dein Problem behebt, denn eigentlich hast du gar kein Problem, siehe 1.
-
jo, da hast du recht, kanns über die Länge in der Sendefunktion machen...