C++, mi lehet a hiba?
Sziasztok!
Függvényt kell írnom, amely egy sztringhez hozzáfűz egyetlen karaktert.
A visszatérési értékem egy pointer, a memóriafoglalást/felszabadítást és kiíratást pedig a mainben végzem.
A problémám, hogy a kiíratásnál kiírja a helyes karaktersorozatot viszont utána pár karakternyi szemetet is, DE..
Ha eggyel nagyobb helyet foglalok és így lezáró nullát használok a függvényemben, akkor kiíratásnál semmi gond.
Miért nem működik normálisan a kiíratás lezáró nulla nélkül? Meg tudom ezt oldani enélkül, vagy mindenképpen kell a lezárás?
Köszi.





A stringnek az az ismérve, hogy \0 van a végén.
Ha nem akarsz lezáró \0-át, akkor használ karakter tömböt és egy plusz változót, ami a hosszát tárolja, azaz térj "vissza" a C-hez!










A C-s string tulajdonsága, hogy 0 karakter zárja le. De ez csak konvenció (meg minden stringmanipulátor így működik), nem kötelező. Ki lehet iratni stringet, és ki lehet iratni adott mennyiségű karaktert, az előbbi lezáró 0-ig megy, az utóbbi pontosan annyi karaktert ír ki, amennyit mondasz neki:
char myString[20] = "asdbsd\0";
std::cout << myString << '\n'; //prints "asdbsd\n"
std::cout.write(myString, 4); //prints "asdb"





Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!