- การแสดงผลและการรับค่า

4. การแสดงผลและการรับค่า
                ฟังก์ชัน printf()  เป็นฟังก์ชันจากคลัง ที่มาพร้อมกับตัวแปลโปรแกรมภาษาซี ใช้สำหรับการแสดงผล มีรูปแบบดังนี้
                                printf("สายอักขระควบคุม", ตัวแปร);
                โดยที่  สายอักขระควบคุม ประกอบด้วย 3 ส่วน คือ
                                - ตัวอักขระที่จะแสดง
                                - รูปแบบการแสดงผล ขึ้นต้นด้วยเครื่องหมายเปอร์เซ็นต์(%)
                                - ลำดับหลีก (escape sequence)
                                ตัวแปร  คือ  ชื่อของตัวแปรที่จะแสดงผล
                รูปแบบการแสดงผล (format specifiers)
                                การกำหนดรูปแบบการแสดงผล
·       ขึ้นต้นด้วยเครื่องหมายเปอร์เซ็นต์(%)
·       ตามด้วยอักขระ 1 ตัว หรือหลายตัว โดยที่อักขระนั้นมีความหมายดังนี้
อักขระ
ชนิดข้อมูล
รูปแบบการแสดงผล
c
char
อักขระเดียว
d
o
x
int
จำนวนเต็มฐานสิบ
จำนวนเต็มฐานแปด
จำนวนเต็มฐานสิบหก
f
float
จำนวนที่มีทศนิยม ในรูปฐานสิบ


ตัวอย่าง  การใช้ฟังก์ชัน printf()
#include <stdio.h>
void main()
{
                int n;
                float score;
                n = 10;
                score = 100;
                printf("No : %d  Score  :  %f", n, score);
}
ผลการกระทำ
No  :  10   Score  :  100.000000
แสดงค่าที่เก็บในตัวแปร  n  ในรูปแบบจำนวนเต็ม  และแสดงค่าที่เก็บใน  score  ในรูปแบบจำนวนจริงที่มีทศนิยม

ตัวอย่าง  การใช้ฟังก์ชัน printf()
                #include <stdio.h>
                void main()
                {
                                int  n;
                                float  score;
                                n = 10;
                                score  = 100;
                                printf(" No  :  %d", n);
                                printf("  Score  :  %f", score);
                }
                ผลการกระทำ
                No  :  10    Score  :  100.000000

ลำดับหลีก (escape sequence)
                ในการแสดงผล บางสิ่งบางอย่างที่จะแสดง อาจไม่ใช่ตัวอักษร จึงไม่สามารถที่จะเขียนสิ่งที่จะแสดงไว้ในโปรแกรมได้ เช่น ต้องการเขียนโปรแกรมให้ส่งเสียง (แสดงผลเป็นเสียง) หรือต้องการให้เลื่อนขึ้นบรรทัดใหม่ก่อนแสดงข้อความ ดังนั้นในการเขียนโปรแกรมเพื่อแสดงผลสิ่งที่ไม่ใช่ตัวอักขระปกติ จะต้องใช้ลำดับหลีก เพื่อช่วยในการกำหนดอักขระพิเศษหรือสิ่งที่ไม่ใช่อักขระที่ต้องการให้โปรแกรมแสดง
                ลำดับหลีก จะเขียนขึ้นต้นด้วยเครื่องหมายทับกลับหลัง ( / ) แล้วตามด้วยอักขระที่ตามหลังมานี้ในลักษณะปกติ เพราะอักขระเหล่านี้จะมีความหมายพิเศษแตกต่างออกไป
                ลำดับหลีกที่ใช้ในการแสดงผลสิ่งที่ไม่ใช่อักขระปกติ ได้แก่

ลำดับหลีก
ผลการกระทำการ
\n
ขึ้นบรรทัดใหม่
\t
เลื่อนไปยังจุดตั้งระยะถัดไป
\a
เสียงกระดิ่ง
\b
ถอยไปหนึ่งที่ว่าง
\f
ขึ้นหน้าใหม่
\\
แสดงเครื่องหมายทับกลับหลัง
\’
แสดงเครื่องหมายฝนทอง
\”
แสดงเครื่องหมายฟันหนู

การใช้ลำดับหลีก \n
#include <stdio.h>                                             //ข้อความสั่งประมวลผลก่อน
void main()
{
                printf("Welcome to C++\n");         //ฟังก์ชันจากคลัง ใช้ในการแสดงข้อความที่อยู่ใน “ ”
}
ผลการกระทำ
Welcome to C++
_
แสดงข้อความ Welcome to C++ ณ ตำแหน่งที่ตัวชี้ตำแหน่งอยู่ แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ตัวอย่างการใช้ลำดับหลีก  \n
#include <stdio.h>                                                             //ข้อความสั่งประมวลผลก่อน
void main()
{
                printf("Welcom\n to\n C++\n");                   /*ฟังก์ชันจากคลังใช้ในการแสดงข้อความและอักขระที่
                                                                                   อยู่ในฟันหนู (" ") */
}
ผลการกระทำ
Welcome
To
C++
_
แสดงข้อความ Welcome ณ ตำแหน่งที่ตัวชี้จอภาพอยู่ แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ที่ต้นบรรทัดใหม่ แสดงข้อความ  to  แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
ที่ต้นบรรทัดใหม่ แสดงข้อความ  C++  แล้วตัวชี้ตำแหน่งเลื่อนไปที่ต้นบรรทัดใหม่
 
ตัวอย่างการใช้รูปแบบการแสดงผลของจำนวนเต็ม
#include <stdio.h>
void main()
{
                int  i, j;
                i = 405;
                j = 50;
                printf(" %d\n", i);
                printf(" %d      %d", i, j);
}
ผลของการกระทำ
405
405    50

ตัวอย่างการใช้รูปแบบการแสดงผลของจำนวนจริงที่มีทศนิยม
#include <stdio.h>
void main()
{
                float  i, j;
                i = 100.123456
                j = 4.345678e2;
                printf("\n\n Fixed pointf format");
                printf("\n i=%f  j=%f", i, jP;
}
ผลการกระทำ
บรรทัดว่าง
บรรทัดว่าง
Fixde point format
บรรทัดว่าง
 i= 100.123456  j=434.567810

ฟังก์ชัน scanf()
                ฟังก์ชัน scanf() เป็นฟังก์ชันจากคลัง ใช้ในการรับข้อมูลจากแป้นพิมพ์โดยจะบอกเลขที่อยู่ของตัวแปรในหน่วยความจำ แล้วจึงนำค่าที่รับมาไปเก็บไว้ตามที่อยู่นั้น
                ฟังก์ชัน scanf() มีรูปแบบดังนี้
                                Scanf("%รูปแบบ", &ตัวแปร);
                โดยที่  &ตัวแปร  หมายถึง เลขที่อยู่ (address) ของตัวแปรที่จะรับค่ามาเก็บในหน่วยความจำ

ตัวอย่างการรับข้อมูลโดยใช้ scanf()
                scanf(" %f", &radius);
                รับข้อมูลชนิด float จากแป้นพิมพ์ แล้วนำไปเก็บไว้ในตัวแปร radius ซึ่งมีเลขที่อยู่คือ &radius

                scanf("%d%f%d", &no, &amount, &unit);
                รับข้อมูล 3 ค่า ชนิด int,  float  และ  int  จากแป้นพิมพ์ แล้วนำไปเก็บไว้ในตัวแปร  no, amount  และ unit  ซึ่งมีเลขที่อยู่ตามที่กำหนดไว้ใน  &no, &amount และ &unit

                scanf("%f%f%f", &length, &width, &height);
รับข้อมูล 3 ค่า ชนิด  float จากแป้นพิมพ์ แล้วนำไปเก็บไว้ในตัวแปร  length, width cและ height ซึ่งมีเลขที่อยู่ตามที่กำหนดไว้ใน  &length, &width และ &height