สวัสดีและยินดีต้อนรับกลับ
ฉันต้องการดำเนินการต่อการสนทนาของเรา เกี่ยวกับฟังก์ชันบางอย่างในไลบรารี
c มาตรฐาน
มีฟังก์ชั่นมากมาย เราผ่านชั้นเรียนมาแล้ว แต่ฉันต้องการเตือนคุณ
จึงมีความสำคัญมากมาย ฟังก์ชันต่างๆ จากไลบรารีมาตรฐาน
c ที่เรามีอยู่แล้ว กล่าวถึงตลอดหลักสูตรด้วยตัวอย่างทั้งหมดของเราและทั้งหมด
สิ่งที่เราได้เรียนรู้
เราคุยกันเยอะมากเกี่ยวกับ ฟังก์ชันสตริง
และบางอันก็ใช้งานง่ายมาก และบางอันเราจะใช้กันมาก ดังนั้นคุณควรจะคุ้นเคยกับสิ่งเหล่านี้
ในการใช้ฟังก์ชันเหล่านี้ คุณต้องรวมสตริงไฟล์ส่วนหัว
h ทุกอย่าง ถูกกำหนดเป็นสตริง ชม.
เราได้พูดคุยเกี่ยวกับแมว str
Str cat ต่อกันสอง สตริง พารามิเตอร์สองตัวที่ใช้
ตัวชี้อักขระสองตัว
และมันจะกลับมาเป็นตัวละคร ตัวชี้ต่อกับตัวชี้อื่น
ดังนั้นการใส่อักขระว่าง จุดสิ้นสุดของสตริงสุดท้าย
ฟังก์ชันจะคืนค่า s1
Str char สิ่งนี้ค้นหา a สตริงที่มีอักขระ
สิ่งนี้จะส่งคืน a ตัวละครดาราเช่นกัน
เป็นวิธีที่ดีในการค้นหา
เราคุยกันเรื่องนี้ค่อนข้างมาก เล็กน้อยกับแมวสตริง
Str เปรียบเทียบกำลังจะไป เพื่อเปรียบเทียบสองสาย
นี่เป็นวิธีมาตรฐานที่คุณทำ
ต้องใช้ตัวชี้สองตัวและ มันส่งกลับจำนวนเต็ม
เรามีตัวอย่างบางส่วนของสิ่งนี้ โดยพื้นฐานแล้วถ้าคุณคืนค่าศูนย์ทั้งสองสตริงจะเท่ากัน
ถ้าเราส่งคืนมากกว่าหรือน้อยกว่า กว่าถ้าคุณเปิดมากกว่าศูนย์นั่นหมายความว่า
s1 มักจะ มากขึ้นในขนาดตัวอักษร
ดังนั้นถ้าคุณผ่านสตริงที่ มี a แล้วสตริงที่สองคือ
b มันจะคืนค่ามากกว่า ศูนย์เพราะหรือจะเปลี่ยนน้อยกว่าศูนย์เพราะ
a น้อยกว่า b
ถ้าคุณผ่านในขเป็นคนแรก พารามิเตอร์และ c เป็นพารามิเตอร์ที่สองของสตริงบางประเภท
เริ่มต้นด้วย b หรือ c มันจะคืนค่ามากกว่าศูนย์
จึงต้องเข้าใจ ค่าที่ส่งคืนเหล่านั้น
นั่นคือสิ่งที่สำคัญ str เปรียบเทียบ
คัดลอก Str
นี่คือวิธีที่คุณสามารถมอบหมาย สตริงไปยังสตริงอื่น
จำไว้ว่า สตริง พอยน์เตอร์ และ อาร์เรย์อักขระ คุณไม่สามารถกำหนดสตริงได้โดยตรง
โดยใช้ตัวดำเนินการมอบหมาย
สำหรับจำนวนเต็มและทศนิยม คุณสามารถ เพียงใช้ตัวดำเนินการเท่ากับ
ทำอย่างนั้นกับสตริงไม่ได้
ดังนั้นคุณต้องใช้ str copy เมื่อคุณ ต้องการกำหนดสตริงให้กับตัวชี้ ตัวชี้อักขระ
หรืออาร์เรย์อักขระ
คุณสามารถเริ่มต้นตัวอักษร ค่าคงที่สตริงตัวอักษรอาร์เรย์ภายในเครื่องหมายคำพูดคู่
แต่หลังจากนั้น หลังจากที่ initialization
ถ้าคุณต้องการเปลี่ยน คุณจะต้องใช้ str copy
ความยาวสตริ
อีกหนึ่งหน้าที่ที่สำคัญของ รับความยาวของสตริง
ส่งคืนขนาด t ซึ่งก็คือ จำนวนเต็มแทนความยาว
ฟังก์ชันสตริงทั้งหมดนี้ ใช้พอยน์เตอร์หรืออาร์เรย์อักขระเป็นพารามิเตอร์
จึงต้องเข้าใจ มันทำงานอย่างไรเช่นกัน
ฟังก์ชันสตริงอื่นๆ strncat
จดจำทุกฟังก์ชั่น ที่เพิ่มจุดสิ้นสุดนั้นปลอดภัยกว่าเล็กน้อยเพราะคุณ
ไม่มีบัฟเฟอร์ล้น
ดังนั้นใน strncat พารามิเตอร์ที่สาม ถูกเพิ่มเข้าไปและสิ่งนี้จะบอกว่าคัดลอกหรือเชื่อมพารามิเตอร์จำนวนมากเข้าด้วยกัน
โดยปกติ พารามิเตอร์ที่สามคือ จะเป็นขนาดของพารามิเตอร์แรกเพราะคุณไม่ต้องการ
เพื่อคัดลอกสิ่งที่ใหญ่กว่านั้น
ฟังก์ชันเหล่านี้ควรเป็น ใช้แทนฟังก์ชันสตริงอื่น
ๆ เนื่องจากเป็น ปลอดภัยสำหรับบัฟเฟอร์ล้น
Strn เปรียบเทียบ
อีกครั้งคุณจะเปรียบเทียบบางอย่าง จำนวนอักขระสำหรับ s1 และ s2
คัดลอก Strn นี่คือพารามิเตอร์ที่สาม end น่าจะเป็นความยาวของ
str หรือขนาดของ s1
เพราะคุณกำลังจะคัดลอก s2 และ s1 แต่คุณไม่ต้องการคัดลอกไบต์มากกว่าที่
s1 สามารถเก็บหรือจัดเก็บได้
ถ่าน Str.
นี่คือที่ที่คุณสามารถค้นหา สตริงสำหรับการเกิดขึ้นครั้งสุดท้ายของอักขระ
ดังนั้นคุณสังเกตเห็นสิ่งนี้ดูดีมาก คุ้นเคยหรือคล้ายกับ str char
มี r พิเศษอยู่ที่นี่
ดังนั้นแทนที่จะกลับคนแรก เหตุการณ์นี้จะส่งคืนการเกิดขึ้นล่าสุด
แต่คุณใช้ แบบเดียวกับอีกวิธีหนึ่ง
สตริ
นี่จะค้นหาสตริง
นี่คือฟังก์ชันการค้นหาโดยที่ คุณกำลังพยายามค้นหาสตริงย่อยภายในสตริง
อีกครั้งโดยใช้ตัวชี้อักขระสองตัว
สตรอค.
นี่เป็นหน้าที่ที่สำคัญที่ คุณสามารถช่วยในการแยกวิเคราะห์ข้อมูล
Strtok ใช้ตัวคั่นเป็น พารามิเตอร์ตัวที่สองและมันจะมองหาตัวคั่นนั้น
ที่ใดก็ได้ภายในสตริง
บ่อยครั้งที่คุณใช้บางอย่างเช่น ช่องว่างหรือบรรทัดฟีดสำหรับ s2
มันจะแตกสตริงออกเป็น จำนวนโทเค็นที่แตกต่างกัน
ใช้เมื่อคุณต้องการอีกครั้ง เพื่อแยกวิเคราะห์ข้อมูลโดยปกติ
ทุกครั้งที่ต้องเรียก strtok หลาย ๆ ครั้งจนกว่าคุณจะเป็นโมฆะถ้าคุณยังอยู่
มองหา tok ถัดไปที่คุณต้องการค้นหาในสตริงที่กำหนด
เราก็มีเรื่องสำคัญ ฟังก์ชั่นตัวละคร
ฟังก์ชั่นตัวละครทั้งหมด ถูกกำหนดเป็น ctype ชม.
ตัวละครทำหน้าที่ที่เรา ใช้คือฟังก์ชันคือตรวจสอบว่าอักขระเป็น
.หรือไม่ ตัวอักษรและตัวเลขหรือว่าว่างเปล่าหรือว่าเป็นตัวควบคุม
อักขระ ตัวเลข มีฟังก์ชันต่าง ๆ มากมาย
ดังนั้นจำ ctype นั้นไว้ ชั่วโมงช่วยให้ ให้เราตรวจสอบตัวละครต่างๆ
เหล่านี้ว่าจริง ๆ แล้วเป็นอย่างไร
เรายังมีฟังก์ชันการแปลงอีกด้วย ในประเภทซี h ส่วนใหญ่เป็นของเราสองคนบน
สองตัวล่างใช้ตัวอักษร และมันจะให้ค่าเท่ากับตัวพิมพ์เล็กของ
c นั้น
จำไว้ว่าเรามีความท้าทายที่ เราแปลงตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่
ในการท้าทายนั้นเราได้เพิ่มจริงๆ ไปที่ตาราง ASCII ของเรา
แต่เราเรียกตัวละครสองตัวบนได้
เราสามารถตั้งค่าสองรอบ ตัวอักษรตราบใดที่เรารวม
ctype h และนั่นจะแปลง ตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่
เรามีIO .มากมาย ฟังก์ชั่นอินพุตและเอาต์พุต
เราจดจ่ออยู่กับการอ่านและ กำลังเขียนไฟล์ แต่เราอ่านอินพุตจากแป้นพิมพ์ด้วยและเราส่งออก
ข้อมูลไปยังคอนโซลหรือหน้าจอ
ดังนั้นเพื่อใช้ IO . ที่พบบ่อยที่สุด ฟังก์ชั่น นั่นคือทั้งหมดที่อยู่ในมาตรฐาน
ไฟล์ส่วนหัว h
ไฟล์นี้มีคำประกาศสำหรับ ฟังก์ชัน IO ต่างๆ รวมถึงคำจำกัดความของค่าคงที่
เช่น จุดสิ้นสุดของไฟล์ มาตรฐาน null ในเอาต์พุตมาตรฐาน และข้อผิดพลาดมาตรฐาน
นั่นคือค่าคงที่ทั้งหมด
นอกจากนี้ยังมีค่าคงที่สำหรับ ไฟล์โครงสร้างไฟล์
Fclose เป็นฟังก์ชันที่เรา เคยปิดกระแสของเรา
มันปิดไฟล์ ระบุโดยตัวชี้ไฟล์
และมันจะคืนค่าศูนย์ถ้ามันเป็น ปิดประสบความสำเร็จมิฉะนั้น eof
Feof นั่นคือฟังก์ชั่นที่เราไม่ได้ ใช้อย่างชัดเจน แต่จะตรวจสอบว่าคุณอยู่ที่จุดสิ้นสุดหรือไม่
ของไฟล์ซึ่งต่างจากการเปรียบเทียบกับค่าคงที่ที่คุณสามารถทำ
feof
ฟลัช
นี่คือฟังก์ชันที่จะฟลัช ข้อมูลทั้งหมดของบัฟเฟอร์ภายใน
บางครั้งคุณต้องทำเช่นนี้ เมื่อคุณต้องการเริ่มต้นใหม่ แต่โดยพื้นฐานแล้วคุณเพิ่งจะกำจัด
ของสิ่งใดในบัฟเฟอร์
เรายังมีfgetc.
นี่คือการอ่านในรายบุคคล อักขระ ใช้ตัวชี้ไฟล์
เรามีตำแหน่ง fget
นี่คือบางส่วนของ ฟังก์ชั่นตำแหน่ง
รับตำแหน่งไฟล์ปัจจุบัน สำหรับไฟล์ที่เกี่ยวข้องกับตัวชี้ไฟล์และเก็บไว้
ในประเภทตำแหน่ง f ซึ่งกำหนดไว้ในมาตรฐาน io
ชั่วโมงเช่นกัน
เรามี fgets ของเรา
นี่คือการอ่านในสตริง
ดีมากมันอ่านตัวอักษร จากไฟล์ที่ระบุแต่จำนวนตัวอักษร
Fopen จะเปิดไฟล์ใน a โหมดเฉพาะ: อ่าน เขียน หรือต่อท้ายโดยใช้ตัวชี้ไฟล์
Fprintf จะเขียนข้อมูลและจัดรูปแบบ เอาต์พุตและคล้ายกับฟังก์ชัน printf
ที่จะใช้ อาร์กิวเมนต์ที่ระบุโดยตัวชี้ จากนั้นใช้ข้อมูลที่จัดรูปแบบเพื่อเขียน
ดังนั้นคุณสามารถเขียนจำนวนเต็ม, สองเท่า โดยใช้ตัวระบุรูปแบบแล้วตัวแปรที่คุณต้องการเขียน
เรายังมี fputc ซึ่งจะ เขียนอักขระลงในไฟล์
Fputs จะเขียนสตริงลงในไฟล์
ต้องใช้บัฟเฟอร์และไฟล์ ชี้สิ่งที่คุณต้องการเขียนและไฟล์ที่คุณต้องการเขียน
Fscanf จะอ่านข้อมูลจากไฟล์
มันจะคว้าอินพุตและ มันจะใช้รูปแบบเดียวกับที่
scanf จะทำ ตัวระบุรูปแบบและตัวแปร
แต่นี่เป็นสิ่งที่ดีที่คุณต้องการ อ่านในข้อมูลที่คั่นด้วยช่องว่าง
คุณสามารถใช้ fscanf และระบุได้ ประเภทดังนั้นอ่านโดยตรงเป็น
int, doubles, ชนิดข้อมูลเฉพาะ
Fseek กำลังจะย้ายตำแหน่ง ที่คุณกำลังชี้ไปในไฟล์
ดังนั้นคุณไม่จำเป็นต้องเริ่มต้นที่ จุดเริ่มต้นหรือจุดสิ้นสุดของไฟล์
คุณสามารถไปที่ .โดยตรง ตรงกลางของไฟล์
เมื่อคุณค้นหาตำแหน่งนั้น . ของคุณ การอ่านหรือเขียนครั้งต่อไปจะใช้ตำแหน่งนั้นเพื่อเขียนหรืออ่าน
ตำแหน่ง Fset นั้นคล้ายกับ fseek
มันกำหนดตำแหน่งไฟล์ปัจจุบัน
ในไฟล์ที่เกี่ยวข้องกับตัวชี้ไฟล์ไปยังค่า ชี้ไปที่ตำแหน่ง f, fpos
เรายังมี ftell
เฟเทลจะกลับมายังไง หลายไบต์ตั้งแต่เริ่มต้น
คุณจะใช้ตัวชี้ไฟล์
ดังนั้นจึงเป็นญาตินอกสถานที่ใน ไบต์จากตำแหน่งปัจจุบัน ไม่ใช่จุดเริ่มต้นเสมอไป
แต่ตำแหน่งปัจจุบัน
เราใช้ ftell ในอันใดอันหนึ่งของเรา ความท้าทายในการอ่านไฟล์ย้อนกลับ
พิมพ์ฉ.
เราใช้สิ่งนี้อาจจะมากกว่า กว่าฟังก์ชั่นอื่นๆ
กำลังแสดง ส่งออกไปยังหน้าจอ
ใช้ตัวระบุรูปแบบ และจำนวนตัวแปรของอาร์กิวเมนต์คั่นด้วยเครื่องหมายจุลภาค
Printf มีประโยชน์มากสำหรับการดีบัก และแสดงผลซึ่งคุณทำค่อนข้างน้อยในโปรแกรม
c
ลบ.
ลบเป็นฟังก์ชันที่ คุณสามารถลบไฟล์
มันใช้ชื่อไฟล์
ต้องปิดตัวชี้ไฟล์
คุณไม่สามารถเปิดได้
การเปลี่ยนชื่อจะเปลี่ยนชื่อไฟล์หนึ่งไฟล์เป็น อีกไฟล์ต้องปิดด้วย
เปิดไฟล์ไม่ได้
Scanf จะอ่านอินพุตจาก มักจะเป็นค่าเริ่มต้นจากแป้นพิมพ์
คุณสามารถเปลี่ยนเป็นอ่านอินพุต จากสตรีมอื่น ๆ หากคุณต้องการ
นอกจากนี้เรายังมีฟังก์ชันการแปลงที่ เราคุยกันตลอดหลักสูตร
ฟังก์ชันเหล่านี้ส่วนใหญ่อยู่ใน ลิบมาตรฐาน h ไฟล์ส่วนหัว
เรามีฟังก์ชัน atof
นี่คือการแปลงสตริงเป็น a ลอยและคุณส่งผ่านเป็นสตริง
เรามีฟังก์ชั่นเอโทอิ
การแปลงนี้ a สตริงเป็นจำนวนเต็ม
Atol กำลังแปลงสตริงเป็น a ยาวและคุณผ่านสตริงและส่งคืนผลตอบแทน
วิธีที่คุณกำลังแปลงเป็น
สิ่งเหล่านี้มีประโยชน์มาก
คุณมักจะใช้สิ่งเหล่านี้เพื่อแปลง สตริงเป็นตัวเลขบางประเภท
Atoll แปลงเป็น int แบบยาว
แต่ให้แน่ใจว่าคุณดูที่ ไฟล์ส่วนหัว lib มาตรฐานสำหรับฟังก์ชันการแปลงเพิ่มเติม
เรามีฟังก์ชั่นหน่วยความจำของเรา ฟังก์ชันการจัดสรรหน่วยความจำแบบไดนามิก
สิ่งเหล่านี้มีความสำคัญจริงๆ
การจัดสรรหน่วยความจำแบบไดนามิกเป็นสิ่งสำคัญ เพราะมันมีประสิทธิภาพมากกว่ามาก
คุณใช้เฉพาะ หน่วยความจำที่คุณต้องการ
คุณไม่ได้สร้างข้อมูลคงที่
จะช่วยให้โปรแกรมของคุณ ให้มีความยืดหยุ่นมากขึ้น
ฟังก์ชันทั้งหมดเหล่านี้คือ รวมอยู่ใน lib มาตรฐาน ชม.
เราคุยกันเรื่องแคลล็อค
Calloc เป็นฟังก์ชันที่ยอดเยี่ยมที่ คุณสามารถจัดสรรขนาดที่แน่นอนและจะถูกคูณด้วย
n
คุณจึงสามารถระบุประเภทข้อมูลได้ เช่นกันและมันจะทวีคูณมัน
สิ่งที่ดีเกี่ยวกับ calloc, มันเริ่มต้นข้อมูลของคุณ
ดังนั้นจึงเป็นที่นิยมมากกว่า malloc
เรามีฟังก์ชั่นฟรีของเรา ซึ่งจะลบหน่วยความจำ
ความทรงจำทั้งหมดนี้กำลังดำเนินไป ที่จะสร้างบนกอง
จะได้อยู่กันเยอะๆ อีกต่อไป แต่ก็ขึ้นอยู่กับคุณในฐานะโปรแกรมเมอร์ที่จะจัดการหน่วยความจำนี้
คุณต้องการปลดปล่อย .ของคุณเสมอ ความจำหลังใช้เสร็จเพราะความจำหายาก
ทรัพยากรในโปรแกรมอื่น ๆ และเราต้องการใช้หน่วยความจำนั้น
ดังนั้นโทรฟรีเสมอหลังจาก คุณทำ calloc หรือ malloc
Malloc นั้นง่ายกว่า รุ่นของการสร้างหน่วยความจำ
มันไม่จริง เริ่มต้นข้อมูลใด ๆ
ใช้ขนาดเป็นพารามิเตอร์เท่านั้น
มันกลับกลายเป็นดาวที่ว่างเปล่า
จึงต้องหล่อเสมอ เช่นเดียวกับการใช้ calloc กับหน่วยความจำประเภทใดก็ตามที่คุณชี้ไป
หากคุณกำลังชี้ไปที่ int หรือ ลอย คุณต้องโยนสิ่งนั้น
เรายังมี realloc
Realloc ยอดเยี่ยมเพราะคุณทำได้ เพิ่มไปยังหน่วยความจำที่มีอยู่จริง
ด้วยวิธีนี้ของคุณ หน่วยความจำสามารถเป็นไดนามิก
คุณสามารถทำให้มันใหญ่ขึ้นได้ถ้า คุณต้องการจัดเก็บข้อมูลเพิ่มเติม
Realloc ใช้ตัวชี้ในขนาด
มันจะเก็บข้อมูลทั้งหมดที่ ความทรงจำก่อนหน้านี้ชี้ไปที่
มันจะจัดสรรหน่วยความจำใหม่ แต่จะเก็บไว้เพื่อให้คุณสามารถเพิ่มในหน่วยความจำที่มีอยู่บางส่วนได้
มีประโยชน์มาก
ในการสร้างหน่วยความจำแบบไดนามิกคือ จะเป็นประโยชน์กับทุกโปรแกรมของคุณโดยเฉพาะอย่างยิ่งเพราะ
ตัวชี้มีความสำคัญมาก มีประสิทธิภาพมากกว่ามาก
แต่ให้แน่ใจว่าคุณเข้าใจทั้งหมด ไฟล์ส่วนหัวเหล่านี้ที่เราใช้ตลอดหลักสูตร
สิ่งเหล่านี้เป็นหลักที่ มีความสำคัญมาก
เราจะพูดถึงสิ่งใหม่ๆ ใน การบรรยายคู่ต่อไปที่เราไม่ได้พูดคุยกันมากเท่าที่ฉันชอบ
แต่นี่คือบางส่วน ที่สำคัญเช่นกัน
ขอขอบคุณ.