ให้เราดูว่าชุดสแกนใน C คืออะไร ชุดสแกนนั้นเป็นตัวระบุที่รองรับโดยฟังก์ชันตระกูล scanf มันถูกแสดงโดย %[] ภายใน scanset เราสามารถระบุอักขระได้เพียงตัวเดียวหรือชุดอักขระ (ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) เมื่อชุดสแกนได้รับการประมวลผลแล้ว scanf() สามารถประมวลผลเฉพาะอักขระที่กล่าวถึงในชุดสแกนเท่านั้น
ตัวอย่าง
#include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf("%[A-Z]s", str); printf("Given String: %s", str); }
ผลลัพธ์
Enter something: HElloWorld Given String: HE
โดยจะละเว้นอักขระที่เขียนด้วยอักษรตัวพิมพ์เล็ก ตัว "W" จะถูกละเว้นด้วยเพราะมีอักษรตัวพิมพ์เล็กอยู่ข้างหน้า
ตอนนี้ หากชุดสแกนมี '^' อยู่ในตำแหน่งแรก ตัวระบุจะหยุดอ่านหลังจากอักขระนั้นปรากฏขึ้นครั้งแรก
ตัวอย่าง
#include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf("%[^r]s", str); printf("Given String: %s", str); }
ผลลัพธ์
Enter something: HelloWorld Given String: HelloWo
ที่นี่ scanf() จะละเว้นอักขระหลังจากได้รับตัวอักษร 'r' เมื่อใช้คุณสมบัตินี้ เราสามารถแก้ปัญหาที่ scanf ไม่ใช้สตริงที่มีช่องว่าง ถ้าเราใส่ %[^\n] มันจะดึงอักขระทั้งหมดจนกว่าจะได้อักขระขึ้นบรรทัดใหม่
ตัวอย่าง
#include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf("%[^\n]s", str); printf("Given String: %s", str); }
ผลลัพธ์
Enter something: Hello World. This line has some spaces. Given String: Hello World. This line has some spaces.