Notice: Undefined property: WikiCommand::$keywords in /home/blinkenlights/public_html/commands/BaseCommand.php on line 30
Blinkenlights.se - Wiki: C-Sträng - Programmering & spelutveckling

BETA

Wiki: C-Sträng

Startsidan | Senaste ändringarna | Lista alla sidor | Sök


C-Sträng

C-strängar är binära strängar som avslutas med en NULL byte. De lagras i minnet direkt, utan metadata såsom längd. Det är upp till programmeraren att sköta information kring strängarna.

C-strängar är svåra i början för alla programmerare att hantera.. Till skillnad mot t.ex. C++ finns det inte inbyggda funktioner för att modifiera strängarna i C, utan endast för att söka och kopiera strängar. Stegen man måste gå för att exempelvis lägga in två bokstäver mitt i en sträng utan att ersätta befintliga bokstäver kan se ut såhär:

  • Räkna ut adressen vid det avstånd där strängen ska läggas in
  • Gå därifrån och leta efter slutet av strängen för att ta reda på längden, eller använd en hårdkodad längd given av programmeraren.
  • Utför en minnesbeflyttning av den delen som efterträder avståndet till där man vill lägg in bokstäverna. Flytta den delen av strängen två bokstäver framåt.
  • Lägg in två bokstäver i tomrummet.

Direkt framgår problem, anta att strängen från början var av längden 10, och att den hade allokerat minne av storleken 11 åt sig själv för att få plats med en NULL byte. Vid den ovanbeskrivna förflyttningen skulle delen som flyttas hamna utanför, och säkerligen trigga en segmentation fault.

För att undvika problem skriver många egna stränghanteringsfunktioner som ser till så att tillräckligt minne är allokerat, och som allokerar nytt eller förstorar en buffer vid behov.

Se även




Senast ändrad av sdac 18:02 - 16:e Mars 2007

Atom feed

Innehållet på denna sida kan ändras utav alla som är medlemmar på Blinkenlights, men du måste logga in för att kunna ändra något.