funkcj strncpy i dziwne znaczki

0

Mam 2 tablice jedna to tab typu string a druga to buffer typu char, potrzebuje skopiowac do chara cala zawartosc stringu bez ostatniego znaku oto kod:

tab=Edit1->Text; // przypisanie do tablicy tab zawartosci edita - JAKO STRING

sprintf(buffer,"%s",tab.c_str()); // konwersja z string na char`a

dl=strlen(buffer); //dlugosc buffera

strncpy(buffer2,buffer,dl-1); // dlugosc chara -1

program dzial poprawnie do 3 znakow ale gdy podamy 4 znaki na koncu tablicy pojawiaja sie dzwne znaczki jak temu zapobiec ? funkcja strcpy dziala dobrze (zawsze)... z gory dziekuje za POMOC...

0

Zauwaz, ze kazdy string, jesli chcesz go wyswietlic, musi byc zakonczony znakiem '\\0'. Jesli nie kopiujesz calego stringa, znak ten nie bedzie dodany, przez co widzisz krzaki. Albo zrob memseta bufora, przed kopiowaniem, albo :
buffer2[dl] = '\\0';

1 użytkowników online, w tym zalogowanych: 0, gości: 1