Amikor a programozás világában járunk, kevés nyelv kínál olyan nyers erőt és kontrollt a hardver felett, mint a C. Ez a képesség azonban kétélű fegyver. Míg a modern nyelvek, mint a Python vagy a Java, automatikusan kezelik a memória nagy részét, elrejtve a bonyolult részleteket a fejlesztő elől, addig a C a memóriakezelés könyörtelen valóságával szembesít minket. Sehol sem nyilvánul meg ez élesebben, mint a sztringek – vagy más néven karakterláncok – kezelésében, különösen azok összefűzésében. Ami más nyelvekben egyszerű művelet, az C-ben könnyen a program összeomlását, váratlan viselkedést vagy akár kritikus biztonsági réseket okozó halálos hibává válhat. De miért van ez így? Miért vall olyan gyakran kudarcot a látszólag triviális sztring összefűzés a C-ben?
A C sztringek alapjai: Nem az, aminek látszanak
A probléma gyökere a C nyelv mélyén, a sztringek belső reprezentációjában rejlik. Egy C sztring nem egy különálló adattípus, mint például a C++ `std::string` vagy a Java `String` objektumai. Ehelyett egyszerűen egy char
típusú tömb, melynek utolsó eleme egy speciális, bináris nulla karakter (