>> DAVID เจลัน: ดังนั้นปรากฎว่า คัดลอกสตริงไม่ได้เกือบเป็น
ง่ายเหมือนกับการคัดลอกดั้งเดิม, เช่น int หรือลอย
หลังจากที่ทั้งหมดภายใต้ประทุนสตริง เป็นตัวอักษรลำดับ
ดังนั้นการคัดลอกสตริงจึงมีการ ที่เกี่ยวข้องกับการคัดลอกลำดับที่ทั้ง
ตัวอักษร
>> ลองหันความสนใจของเรากลับไปที่ การดำเนินงานที่ผ่านมาและตัดออกนี้
สายสตริงทีเท่ากับ s ซึ่ง อย่างชัดเจนไม่เพียงพอ
ลองแทนที่ด้วยสายที่ ดูแทนเช่นนี้
สตริงทีได้รับ malloc ความยาวสตริงของ s บวก 1 เท่าของขนาดของถ่าน
>> ขณะนี้จะมีการอ้างอิงไปนิด ในบรรทัดของรหัสนี้
แรก malloc, สั้นสำหรับหน่วยความจำ การจัดสรรและ
ฟังก์ชั่นไม่เพียงแค่นั้น
ป.ร. ให้ไว้ ณ จำนวนเต็มก็จะกลับสู่คุณ ที่อยู่ของหน่วยความจำอันของ
ไบต์ที่หลาย
ในขณะที่ความยาวสตริงของ s บวก 1 มีขึ้นเพื่อแสดงให้เห็นว่าเราต้องการเป็น
ไบต์เป็นจำนวนมาก s ตรงแล้ว รวมทั้งยุติ null การทำงานที่
0 ทับขวาที่ส่วนท้ายของสตริง
>> ในขณะที่ฉันไม่จำเป็นต้องจำ วิธีใหญ่เป็นถ่านแม้
แต่ในระบบส่วนใหญ่เป็นเพียง 1 ไบต์ดังนั้นฉันจะเรียกขนาดของถ่านที่จะ
คิดออกว่าใหญ่แบบไดนามิก ตัวบุคคลเป็น
เมื่อคูณด้วยกันฉันจะได้รับกลับ จำนวนไบต์ที่ฉันต้องการ
>> แต่สิ่งที่ถ้า malloc ล้มเหลวในการ กลับหน่วยความจำที่เราต้องการ
ฉันต้องการที่ดีที่สุดตรวจสอบดังต่อไปนี้
หากเสื้อเท่ากับโมฆะแล้วฉันจะเป็นครั้งแรก จะฟรี, หน่วยความจำที่ส่งกลับโดยได้รับ
สตริงและจากนั้นฉันจะไป 1 คืนเพื่อให้มีความหมายว่าข้อผิดพลาด
>> แต่ถ้าทั้งหมดเป็นอย่างดีผมจะดำเนินการต่อไป ที่จะใช้วงสี่และย้ำ
ดังต่อไปนี้
สำหรับ int ฉันได้รับ 0, n เท่ากับ ความยาวสตริงของ s
ฉันจะทำเช่นนี้ตราบใดที่ฉันเป็น น้อยกว่าหรือเท่ากับ n เพื่อที่ฉัน
ย้ำผ่านและรวมถึง ตัวละครยกเลิกโมฆะใน s
>> และในแต่ละรอบฉัน จะเพิ่มฉัน
ในขณะที่ด้านในของวงนี้คัดลอก s อักขระ i th-เป็นเสื้อของฉัน th-
สถานที่มันพอเพียงที่จะทำเสื้อ วงเล็บที่ฉันได้รับ s วงเล็บฉัน
>> ตอนนี้ขอบันทึกรวบรวมและ รันโปรแกรมใหม่นี้
ทำสำเนาสำเนา 1 จุดเฉือน 1
และฉันจะพูดอะไรบางอย่างเช่น สวัสดีในพิมพ์เล็กทั้งหมด
และโชคดีที่เวลานี้ของฉัน เดิมยังคงไม่เปลี่ยนแปลง
สวัสดีในพิมพ์เล็กทั้งหมด
แต่สำเนาเป็นแท้จริงพิมพ์ใหญ่