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. Tôi tốt nhất muốn thêm một thêm dòng mã của tôi. Đặc biệt, bởi vì tôi bây giờ sử dụng malloc, yêu cầu bộ nhớ, nó là của tôi trách nhiệm để giải phóng bộ nhớ khi tôi đang thực hiện với nó, giống như chúng tôi nên được giải phóng bộ nhớ đó là ban cho chúng ta có được chuỗi. Vì vậy, vào cuối của chương trình này, tôi sẽ thêm một dòng bổ sung để giải phóng t trước khi trở lại 0 để chỉ ra thành công. 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.