>> DAVID J. Malan: Vì vậy, nó chỉ ra rằng sao chép một chuỗi gần như không
đơn giản như sao chép một nguyên thủy, như một int hoặc float.
Sau khi tất cả, bên dưới mui xe một chuỗi là một nhân vật theo thứ tự.
Vì vậy, việc sao chép một chuỗi, do đó, phải liên quan đến việc sao chép mà toàn bộ chuỗi các
ký tự.
>> Chúng ta hãy chuyển sự chú ý của chúng tôi lại cho rằng thực hiện cuối cùng và rip ra điều này
dòng, chuỗi t bằng, mà rõ ràng là không đủ.
Chúng ta hãy thay thế nó bằng một dòng trông, thay vào đó, như thế này.
Chuỗi t được malloc chiều dài chuỗi s cộng với 1 lần kích thước của một char.
>> Bây giờ có trích dẫn một chút đi trên trong dòng mã này.
Đầu tiên, malloc, viết tắt của bộ nhớ phân bổ, và
chức năng hiện điều đó.
Đưa ra một số nguyên, nó sẽ trả về cho bạn địa chỉ của một đoạn bộ nhớ của
mà nhiều byte.
Trong khi đó, chiều dài chuỗi s cộng với 1 có nghĩa là để chỉ ra rằng chúng tôi muốn như
nhiều byte như s đã chiếm, bao gồm terminator null của nó, là
dấu gạch chéo ngược 0 ở cuối của một chuỗi.
>> Trong khi đó, tôi không nhất thiết phải nhớ lớn như thế nào một char là, ngay cả
mặc dù trên hầu hết các hệ thống nó chỉ đơn giản 1 byte, vì vậy tôi sẽ gọi cho kích thước của char
tìm ra động lớn như thế nào một nhân vật cá nhân.
Một khi nhân với nhau, tôi lấy lại tổng số byte mà tôi cần.
>> Nhưng nếu malloc không trả lại bộ nhớ chúng ta cần?
Tôi muốn kiểm tra tốt nhất cho điều đó như sau.
Nếu t bằng null, sau đó tôi lần đầu tiên đi để miễn phí, bộ nhớ được trả về bởi get
chuỗi, và sau đó tôi sẽ trả lại 1, để biểu thị lỗi.
>> Nhưng nếu tất cả là tốt, tôi sẽ tiến hành để sử dụng một vòng bốn và lặp
như sau.
Cho int tôi nhận được 0, n bình đẳng chiều dài chuỗi s.
Tôi sẽ làm điều này miễn là tôi là nhỏ hơn hoặc bằng n để tôi
lặp lên thông qua và bao gồm cả vô nhân vật chấm dứt trong s.
>> Và mỗi lần lặp, tôi sẽ tăng i.
Trong khi đó, bên trong vòng lặp này, sao chép s của nhân vật thứ i vào thứ i t của
vị trí, nó cũng đủ để làm t khung tôi được s khung i.
>> Bây giờ chúng ta tiết kiệm, biên dịch, và chạy chương trình mới này.
Làm sao 1 dấu chấm dấu gạch chéo bản sao 1.
Và tôi sẽ nói điều gì đó như xin chào tất cả các chữ thường.
Và may mắn thay, thời gian này của tôi ban đầu vẫn không thay đổi.
xin chào tất cả các chữ thường.
Nhưng các bản sao là, thực sự, viết hoa.