>> David J. MALAN: Okazuje się, że kopiowanie ciąg nie jest tak
proste jak kopiowanie prymitywne, jak int lub float.
Wszakże pod maską ciąg jest ciągiem znaków.
Więc kopiowanie ciąg, dlatego musi obejmować kopiowanie że całą sekwencję
znaków.
>> Zwróćmy uwagę, że z powrotem do Ostatnia realizacja i wyrwać to
linia, łańcuch t jest równe S, który wyraźnie nie był wystarczający.
Załóżmy, wymień go na linii, która wygląda, a nie, jak to.
String t dostaje malloc długości string S Plus 1 razy rozmiar char.
>> Teraz jest cytat nieco dzieje na w tej linii kodu.
Po pierwsze, malloc, krótki dla pamięci alokacji, a
funkcja właśnie to robi.
Biorąc pod uwagę całkowitą, zwraca się do ciebie z adres kawałkiem pamięci
że wiele bajtów.
Tymczasem długość łańcuch s oraz 1 ma oznaczać, że ma co
jak wiele bajtów, a zajmuje już w tym jego terminator zerowej
odwrotny ukośnik 0 na końcu łańcucha.
>> Tymczasem ja nie muszą pamiętać jak duży char jest, nawet
choć w większości systemów jest to po prostu 1 bajt, więc zadzwonię do rozmiaru char
dowiedzieć się, jak duże dynamicznie indywidualny charakter jest.
Po pomnożone razem, wrócę Całkowita liczba bajtów, które muszę.
>> Ale co, jeśli nie malloc przywrócić pamięć musimy?
Chciałbym za to najlepiej sprawdzić w następujący sposób.
Jeśli t jest równe NULL, to ja pierwszy będzie do bezpłatnych s, pamięć powróciła przez GET
łańcuch, a następnie zamierzam zwraca 1, oznaczać błąd.
>> Ale jeśli wszystko jest dobrze, mam zamiar kontynuować użycie czterech pętli i iteracyjne
w następujący sposób.
Dla int i dostać 0, n wynosi Długość ciąg s.
Mam zamiar to zrobić, tak długo, jak jest mniejsza lub równa n, tak że
iteracyjne się poprzez włącznie wartość null kończący znaków w s..
>> I na każdej iteracji, jestem zamierza zwiększyć i..
Tymczasem wewnątrz tej pętli, kopiować y jest i-ty znak w T i-th
lokalizacja, wystarczy zrobić t Uchwyt i dostaje ów wspornik i..
>> Załóżmy teraz zapisać, skompilować i uruchomić ten nowy program.
Dodać 1 kropka slash kopia kopii 1.
I powiem coś Witaj w całej małe.
I na szczęście, tym razem moja oryginalne pozostaje niezmienione.
Witaj w całej małe.
Ale kopia jest, rzeczywiście, kapitalizowane.