ในภาษาซีจะใช้สตรีมสองรูปแบบ คือ เท็กซ์ (Text) และไบนารี (Binary) โดยสตรีมเท็กซ์ จะเป็นตัวอักขระที่ต่อเนื่องกันไป ส่วนสตรีมไบนารีจะเป็นข้อมูลที่แทนค่าตัวเลข เช่น เลขจํานวนเต็ม เลขทศนิยม
Data Source Program
Keyboard ---> Input Text Stream ---> Data
Monitor ---> Output Text Stream ---> Data
Data Destination
ต่อไปจะกล่าวถึงการรับข้อมูลและการส่งข้อมูลโดยจะกล่าวถึงฟังก์ชั่นในการรับข้อมูลจากแป้น พิมพ์ และการส่งข้อมูลออกทางจอภาพ โดยคําสั่งดังกล่าวจะอยู่ในไลบรารี stdio.h ซึ่งจะต้องเรียก ออกมาก่อนด้วย #include
3.5.1 ฟังก์ชัน printf()
ฟังก์ชันนี้เราได้ทดลองใช้อย่างง่ายๆ มาแล้ว โดยใช้สําหรับแสดงข้อความหรือตัวแปรฟังก์ชั่น printf() มีชื่อเต็มว่า print format เป็นฟังก์ชั่นที่ใช้พิมพ์ข้อความต่างๆ ออก จอภาพโดยมีรูปแบบดังนี้
รูปแบบ
printf ("ข้อความ") หรือ
printf ("รหัสควบคุมรูปแบบ”, ตัวแปร) หรือ
printf('control string", variable list....);
โดยค่าที่ส่งเข้าไปในฟังก์ชันจะมีสองส่วน ส่วนแรกเรียกว่าสตริงฟอร์แมต เป็นส่วนที่ใช้ ควบคุมลักษณะการแสดงผล และส่วนที่สองหมายถึงค่าคงที่ หรือตัวแปรที่จะให้แสดงผล โดย ฟังก์ชัน print จะพิมพ์ค่าที่อยู่ในตัวแปรในส่วนของ variable list ตรงตําแหน่ง Control String ภายในสตริงฟอร์แมต
รหัสแบ็กสแลช (backslash) ซึ่ง หลายรูปแบบดังนี้
รหัส ผลที่ได้
printf ("ข้อความ") หรือ
printf ("รหัสควบคุมรูปแบบ”, ตัวแปร) หรือ
printf('control string", variable list....);
โดยค่าที่ส่งเข้าไปในฟังก์ชันจะมีสองส่วน ส่วนแรกเรียกว่าสตริงฟอร์แมต เป็นส่วนที่ใช้ ควบคุมลักษณะการแสดงผล และส่วนที่สองหมายถึงค่าคงที่ หรือตัวแปรที่จะให้แสดงผล โดย ฟังก์ชัน print จะพิมพ์ค่าที่อยู่ในตัวแปรในส่วนของ variable list ตรงตําแหน่ง Control String ภายในสตริงฟอร์แมต
รหัสแบ็กสแลช (backslash) ซึ่ง หลายรูปแบบดังนี้
รหัส ผลที่ได้
\n ให้ขึ้นบรรทัดใหม่
\t ให้เว้น tab เป็นระยะ 8 ช่วง
\xhh แสดงตัวอักษรเมื่อ hh เป็นเลขฐานสิบหก
\a ส่งเสียงบีป
\\ เครื่องหมาย Backslash
เครื่องหมาย % นี้เรียกว่า format specification ซึ่งมีใช้หลายรูปแบบดังนี้
เครื่องหมาย การใช้งาน
%d ให้พิมพ์รูปแบบเลขจํานวนเต็มฐานสิบ
%u ให้พิมพ์รูปแบบเลขจํานวนเต็มไม่มีเครื่องหมาย
%f ให้พิมพ์รูปแบบเลขทศนิยม
%e ให้พิมพ์เลขจํานวนจริงในรูปเลขยกกําลัง
%c ให้พิมพ์ตัวอักษรตัวเดียว (Char)
%s ให้พิมพ์ชุดตัวอักษร (string) หรือข้อความ
%% ให้พิมพ์เครื่องหมาย %
%o ให้พิมพ์เลขฐานแปด
%x ให้พิมพ์เลขฐานสิบหก
%d ให้พิมพ์รูปแบบเลขจํานวนเต็มฐานสิบ
%u ให้พิมพ์รูปแบบเลขจํานวนเต็มไม่มีเครื่องหมาย
%f ให้พิมพ์รูปแบบเลขทศนิยม
%e ให้พิมพ์เลขจํานวนจริงในรูปเลขยกกําลัง
%c ให้พิมพ์ตัวอักษรตัวเดียว (Char)
%s ให้พิมพ์ชุดตัวอักษร (string) หรือข้อความ
%% ให้พิมพ์เครื่องหมาย %
%o ให้พิมพ์เลขฐานแปด
%x ให้พิมพ์เลขฐานสิบหก
ในการเขียนคําสั่ง printf หนึ่งบรรทัด เราสามารถให้พิมพ์ตัวอักษรหลายๆ รูปแบบได้ ดังเช่น คําสั่งต่อไปนี้
printf (%S %d %f %C \n","Sam", 14, 8.76, X);
จะเห็นว่าคําสั่งนี้มี Control String หลายรูปแบบ และมี variable list หลายตัว ถ้าเป็น สตริงจะอยู่ในเครื่องหมาย " " ถ้าเป็นตัวอักษรจะอยู่ในเครื่องหมาย " " สําหรับค่า variable list จะต้องเรียกตามลําดับที่กําหนดใน Control string ผลลัพธ์จากการทําคําสั่งจะเป็นดังนี้
Sam 14 -8.760000 X
จะสังเกตเห็นว่าในการพิมพ์เลขทศนิยม (%f) ข้อมูลที่ใส่ไปคือ -8.76 แต่ผลลัพธ์ที่ได้ จะได้ทศนิยมหลายตําแหน่ง คําสั่ง printfi สามารถระบุจํานวนเลขทศนิยมได้ โดยใส่จํานวนทศนิยม และเครื่องหมายจุด ( . ) ระหว่าง % และ f ดังตัวอย่างคําสั่งต่อไปนี้
printf ("%f %.3f 6.2 %.1f",4.5678,4.5678,4.5678,45678);
ผลลัพธ์ที่ได้จากการทําคําสั่งจะเป็นดังนี้
4.567800 4.568 4.57 4.6
3.5.2 ฟังก์ชัน scanf()
ฟังก์ชันนี้จะตรงข้ามกับฟังก์ชั่น printf() โดยจะใช้อ่านค่าจากการกดแป้นพิมพ์ที่อยู่ในรูป รหัส ASCll ไปเก็บในตัวแปรที่กําหนด และสามารถใช้เป็นรหัสควบคุมหรือ Control string ระบุชนิดของข้อมูลที่จะเก็บในตัวแปรได้ รูปแบบของคําสั่งเป็นดังนี้
รูปแบบ
scanf( "control string", &variable list,....); หรือ
scanf("รหัสรับข้อมูล", ตัวแปรเก็บข้อมูล),
โดยเครื่องหมาย & เป็นการชี้ไปที่แอดเดรสหน่วยความจําของตัวแปรที่กําหนดเพื่อให้เก็บ ข้อมูล สําหรับ Control string จะเป็นตัวบอกว่าจะให้เก็บข้อมูลในลักษณะใด ตัวอย่างเช่น
ฟังก์ชันนี้จะตรงข้ามกับฟังก์ชั่น printf() โดยจะใช้อ่านค่าจากการกดแป้นพิมพ์ที่อยู่ในรูป รหัส ASCll ไปเก็บในตัวแปรที่กําหนด และสามารถใช้เป็นรหัสควบคุมหรือ Control string ระบุชนิดของข้อมูลที่จะเก็บในตัวแปรได้ รูปแบบของคําสั่งเป็นดังนี้
รูปแบบ
scanf( "control string", &variable list,....); หรือ
scanf("รหัสรับข้อมูล", ตัวแปรเก็บข้อมูล),
โดยเครื่องหมาย & เป็นการชี้ไปที่แอดเดรสหน่วยความจําของตัวแปรที่กําหนดเพื่อให้เก็บ ข้อมูล สําหรับ Control string จะเป็นตัวบอกว่าจะให้เก็บข้อมูลในลักษณะใด ตัวอย่างเช่น
int num;
scanf("%d", &num);
เมื่อคอมพิวเตอร์ทําชุดคําสั่ง scanf จะรอรับข้อมูลจากแป้นพิมพ์ เมื่อเราใส่ข้อมูล และกด ปุ่ม <Enter> จะนําข้อมูลไปเก็บในตัวแปรชื่อ num ในรูปของเลขฐานสิบ เนื่องจาก control string เป็น %d สําหรับ Control string มีได้หลายตัวเช่นเดียวกับคําสั่ง printf()
หากมองการทํางานของฟังก์ชัน printf ลึกๆ แล้ว จะพบว่าฟังก์ชันนี้จะนําข้อมูลที่ได้รับมา เปลี่ยนให้เป็นสตรีมเท็กซ์เพื่อนําไปแสดงออกทางจอภาพ ตัวอย่างเช่น ถ้าหากรับค่าตัวเลข 234 เข้ามา โปรแกรมจะเปลี่ยนเป็นรหัส ASCII ของตัวเลขสามตัวคือ '2' , '3' และ '4' จากนั้นส่งเป็นสตรีม เท็กซ์ออกไป เพื่อแสดงผลทางจอภาพ
สําหรับฟังก์ชั่น Scan จะใช้รับสตรีมเท็กซ์เข้ามา จากนั้นเปลี่ยนให้เป็นข้อมูลตามที่ระบุไว้ ในรหัสรับข้อมูล ตัวอย่างเช่น ถ้าหากรับตัวอักขระเข้ามาห้าตัว คือ '2' , '3' , '4' ',' และ '2' เมื่อระบุรหัสรับข้อมูลไว้เป็น %f จะทําให้โปรแกรมเปลี่ยนสตรีมที่ได้เป็นเลขทศนิยม ซึ่งได้ผลดีพอ เป็น 234.2 นั้นเอง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น