ฉันควรจะตอบคำถามการบ้านสำหรับชั้นเรียนของฉัน โดยเฉพาะฉันควรจะบอกว่าอาร์เรย์บางตัวใน C ถือเป็นสตริงหรือไม่ อ้างอิงจากบทความนี้ ( https://www.geeksforgeeks.org/strings-in-c-2/ ) ฉันรู้ว่าสตริงนั้นเป็นอาร์เรย์ของตัวละครที่มีตัวสิ้นสุด null ในตอนท้าย
Hangup หลักของฉันเป็นส่วนหนึ่งของคำถามที่ถามเกี่ยวกับอาร์เรย์ที่มีลักษณะดังนี้:
char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' };
เห็นได้ชัดว่านี่คืออาเรย์ของอักขระที่มีอักขระสิ้นสุดในตอนท้าย อย่างไรก็ตามมันยังถือว่าเป็นสตริงเพราะมันยังมีอักขระยุติกลางที่? สิ่งนั้นจะมีผลกับสตริงอย่างไร?
แก้ไข: จากความคิดเห็นฉันได้ให้ถ้อยคำที่แท้จริงของคำถาม:
"อาร์เรย์ใดต่อไปนี้ถือเป็น" สตริง "เพื่อจุดประสงค์ในการใช้เป็นอาร์กิวเมนต์สำหรับ strcpy (), strncpy (), strcmp (), strcmp (), strncmp () และฟังก์ชั่นสตริงที่คล้ายกัน (ระบุถึงการใช้ทั้งหมด)"
แก้ไข: ฉันส่งอีเมลถึงอาจารย์ของฉันเกี่ยวกับเรื่องนี้เนื่องจากคำถามดูเหมือนจะคลุมเครือคำ (หลายคนชี้ให้เห็น) ถ้าใครอยากรู้อยากเห็นเขาบอกฉันว่า "ใช่มันเป็นสตริงที่สำคัญคือว่ามีตัวละครที่เป็นโมฆะ แต่แน่นอนว่าจะมีผลการดำเนินงานของสตริงใด ๆ ; สตริงที่สิ้นสุดที่ตัวละครโมฆะ"
strcmp()
ถูกนำมาใช้เป็นอาร์กิวเมนต์ไปยัง ไม่ว่าจะสามารถใช้เป็นอาร์กิวเมนต์ในการกลายพันธุ์ฟังก์ชั่นสตริงขึ้นอยู่กับปัจจัยเพิ่มเติมที่ไม่ได้ให้ไว้
c1
ไม่แน่นอนดังนั้นฉันไม่เห็นว่าทำไมจึงไม่สามารถเป็นอาร์กิวเมนต์ปลายทางที่ถูกต้องสำหรับstrcpy
หรือคล้ายกันได้เว้นแต่จะมีขนาดไม่ใหญ่พอที่จะรองรับสตริงต้นทาง นั่นจะไม่ทำให้มันไม่ใช่สตริง แต่ไม่ใช่สตริงที่เหมาะสมสำหรับจุดประสงค์ที่กำหนด
c1
จะตอบสนองความต้องการขั้นพื้นฐานสำหรับการขัดแย้งสตริงกับฟังก์ชั่นสตริง (แคบ) ของไลบรารีมาตรฐานทั้งหมดรวมถึงฟังก์ชันที่มีชื่อเฉพาะ แต่พฤติกรรมอาจไม่เป็นสิ่งที่ผู้เรียกคาดหวังหรือต้องการ (แม้จะไม่สนใจ
char
ไม่จำเป็นต้องเป็น ตัวละครประเภทใดจะทำ
"CS"
มีการเพิ่มขยะขนาดไม่กี่ไบต์ (ในกรณีนี้อักขระ NUL สุดท้ายไม่เกี่ยวข้อง) แต่ไม่ใช่สตริง "โดยรวม" - อย่างไรก็ตามการป้อนข้อมูลนี้strcpy
เป็นต้นไม่ได้ทำให้พีซีของคุณระเบิดเพราะฟังก์ชั่นเหล่านี้จะ "เห็น" เฉพาะ"CS"
ส่วน