เหตุใดจึงใช้ %c ใน C
เช่นเดียวกับภาษาโปรแกรมอื่น ๆ C มีไวยากรณ์ตายตัวที่ต้องปฏิบัติตามเพื่อสร้างโปรแกรม ไวยากรณ์พื้นฐานของ C คือผู้ใช้ต้องรวม ไฟล์ส่วนหัว C อันดับแรกได้แก่
นานาชาติ หลัก ( เป็นโมฆะ ) {
}
และใช้คำสั่งพิมพ์เพื่อแสดงผลลัพธ์ ตัวอย่างเช่น มาลองพิมพ์จดหมายกัน เค เป็นเอาต์พุตและใช้คำสั่งที่เขียนด้านล่างภายในฟังก์ชันหลัก:
พิมพ์ฉ ( '%d' , 'เค' ) ;
ในผลลัพธ์ คุณจะเห็นสิ่งนั้นแทนตัวอักษร เค ตัวเลขจะแสดงเป็นเอาต์พุต สับสน?
ทีนี้มาทำความเข้าใจกับแนวคิดที่ว่าเหตุใดจึงต้องพิมพ์ตัวเลขแทนตัวอักษร เค ดังนั้น คำตอบก็คือ คอมพิวเตอร์เป็นเครื่องที่ทำงานเกี่ยวกับตัวเลข ดังนั้น อักขระหรือตัวอักษรแต่ละตัวจะมีหมายเลขเครื่องที่เทียบเท่ากัน (รหัส ASCII) สำหรับคอมพิวเตอร์นั้น ตัวอย่างเช่น; ในตัวอย่างข้างต้น หมายเลขเทียบเท่าเครื่องสำหรับ เค เป็น 107 . หากผู้ใช้ใช้ %d ด้วยอักขระโปรแกรมจะแสดงรหัส ASCII ของอักขระ ไม่ใช่อักขระดั้งเดิม
ชอบ %d , %ค ใช้เพื่อแสดงอักขระดั้งเดิม ตอนนี้ให้เรียกใช้คำสั่งด้านบนเดียวกันเพื่อพิมพ์ เค เพียงแค่แทนที่ %d กับ %ค ดังที่แสดงด้านล่าง:
พิมพ์ฉ ( '%ค' , 'เค' ) ;
ตอนนี้ในผลลัพธ์ คุณจะเห็นได้อย่างชัดเจนว่าแทนที่จะเป็นตัวเลข ตัวอักษร เค พิมพ์เอง. ดังนั้นเมื่อใดก็ตามที่ผู้ใช้ต้องการพิมพ์ตัวอักษรก็สามารถใช้ได้ %ค ภายในคำสั่งพิมพ์ เดอะ %ค แสดงถึง 'อักขระ' และแจ้งคอมไพเลอร์ว่าต้องการเอาต์พุตอักขระ:
การใช้ %c ในอาร์เรย์
ทีนี้มาพิมพ์อาร์เรย์อักขระโดยใช้ %ค ด้วยคำสั่งพิมพ์ ในโปรแกรมด้านล่าง ฉันได้กำหนดอาร์เรย์ของ 9 ตัวอักษรและฉันต้องการพิมพ์องค์ประกอบอาร์เรย์ที่แน่นอนเหล่านี้ทีละรายการ เพื่อที่ฉันได้ใช้ a สำหรับลูป ซึ่งภายใน พิมพ์ฉ คำสั่งที่มีอยู่พร้อมกับ %ค :
#รวม#รวม
นานาชาติ หลัก ( เป็นโมฆะ ) {
ถ่าน อาร์เรย์ [ ] = { 'ล' , 'ฉัน' , 'น' , 'ใน' , 'เอ็กซ์' , 'ชม' , 'ฉัน' , 'น' , 'ท' } ;
สำหรับ ( นานาชาติ x = 0 ; x < 9 ; x ++ ) {
พิมพ์ฉ ( '%ค' , อาร์เรย์ [ x ] ) ;
พิมพ์ฉ ( ' \n ' ) ;
}
}
หลังจากรันโปรแกรม คุณจะเห็นว่าเอาต์พุตแสดงอักขระทีละตัว:
ตอนนี้ให้โปรแกรมเหมือนเดิมและแทนที่ %ค กับ %d ภายในคำสั่ง printf และสังเกตความแตกต่างของผลลัพธ์:
#รวม#รวม
นานาชาติ หลัก ( เป็นโมฆะ ) {
ถ่าน อาร์เรย์ [ ] = { 'ล' , 'ฉัน' , 'น' , 'ใน' , 'เอ็กซ์' , 'ชม' , 'ฉัน' , 'น' , 'ท' } ;
สำหรับ ( นานาชาติ x = 0 ; x < 9 ; x ++ ) {
พิมพ์ฉ ( '%d' , อาร์เรย์ [ x ] ) ;
พิมพ์ฉ ( ' \n ' ) ;
}
}
ตอนนี้ในเอาต์พุต คุณจะเห็นได้เพียงแค่เปลี่ยน %ค, เอาต์พุตมีการเปลี่ยนแปลงอย่างสมบูรณ์ แทนที่จะเป็นอักขระ รหัส ASCII จะแสดง:
บทสรุป
เดอะ %ค ในภาษาโปรแกรมซีใช้แทนตัวอักษร เช่นเดียวกับกรณีที่ผู้ใช้ต้องการพิมพ์อักขระหรืออาร์เรย์ของอักขระที่พวกเขาสามารถใช้ได้ %ค ด้วยคำสั่ง printf เพื่อแจ้งคอมไพเลอร์ว่าต้องการเอาต์พุตในรูปแบบอักขระ ถ้า %d จะใช้แทน %ค เอาต์พุตจะเปลี่ยนโดยสิ้นเชิงและแทนที่จะแสดงเอาต์พุตอักขระ เอาต์พุตจะแสดงรหัส ASCII ของอักขระแต่ละตัว