บทนี้จะกล่าวถึงวิธีการรับข้อมูลจาก คีย์บอร์ดเพราะรูปแบบการรับเข้าข้อมูลจะขึ้นอยู่กับ รูปแบบของชนิดข้อมูลที่เราจะรับ โดยที่เราจำเป็นต้องเลือกให้ถูกรูปแบบในการใช้ด้วยนะครับ เพราะท่าผิดรูปแบบ ก็จะทำให้โปรแกรม เกิด errorนะครับ
function ที่ใช้ในการรับของมูลจากคีย์บอร์ดคือ scanf(scan formatted)
scanf("sting_format",& addrss_list); | |||
รูปแบบ | |||
แบบชนิดข้อมูลเท่านั้น เช่น %d, %c, %s, %f,…. เท่านั้น
addrss_list : จะเป็นที่อยู่ของข้อมูลที่เรารับเข้ามาว่าเราจะไปเก็บที่ตัวแปร
ใหนซึ่งจะแตกต่างกับของ function printf(); ตรงที่มีตัว &
อยากให้คิดง่ายๆว่ามันบอกว่าให้เก็บเข้าตัวแปรใหน
ข้อความจำ | ||
การใช้ฟังก์ชั่น scanf() รับข้อมูลชนิดสติงต่างๆเข้ามาทางคีย์บอร์ดนั้นเราไม่ต้องใส่ & นำหน้าตัวแปรที่เราจะเอาค่า string ไปเก็บไว้เนื่องจากภาษาซีกำหนดให้ชื่อตัวแปรชนิดสตริง เป็นการอ้างอิงถึงที่อยู่ของตัวแปรนั้นๆอยู่แล้ว |
1: | #include<stdio.h> | |
2: | main(){ | |
4: | char name[20], Bloodgroup; //name จะรับได้19 ตัว | |
5: | int age; | |
6: | float weight; | |
7: | ||
8: | printf("name:"); | |
9: | scanf("%s", name); //รับข้อมูลชนิดสติงไม่ต้องใส่& | |
10: | Printf("Group Blood:"); | |
11: | scanf(" %c",&Bloodgroup); /* ที่ไม่ใช่ชนิดสตริงต้องมี & เสมอ | |
13: | printf("Age :"); แล้วเฉพาะชนิดcharater ต้องมีการ | |
14: | scanf("%d",&age); เครียลสกรีน เช่นใส่ clrscr(); ในบาง | |
15: | Printf("Weight :"); โปรแกรม ก็ แค่เว้นข้างหน้าตัว | |
16: | scanf("%f",&weight); %c 1ครั้งหรือ 1 เคาะหน้าตัวนั้น | |
17: | บางโปรแกรมก็ไม่ต้องก็ได้*/ | |
18: | printf("#########################################"); | |
19: | printf("You name :%s\tBloodGroup:%c\n",name,Bloodgroup); | |
20: | printf("You Age:%d\tWeight:%.2f",age,weight); | |
21: | ||
22: | } | |
การรับและแสดงข้อมูลแบบตัวอักษร
การรับแสดงข้อมูลแบบตัวอักษร นอกจากจะใช้ฟังก์ชั่น scanf() และ printf()แล้วยังมีfunction เฉพาะที่ใช้ในการรับข้อมูลแบบตัวอักษร คือ getchar() และแสดงผลข้อมูลแบบตัวอักษรคือ putchar()ด้วย
getchar() : เป็นfunctionสำหรับรับข้อมูลจากคีย์บอร์ด 1 ตัวอักษรตัวอย่างนี้จะแสดงการเปรียบเทียบระหว่าง getchar() กับ scanf() และ putchar กับ printf() นะครับ
putchar() : เป็นfunction()สำหรับแสดงผลข้อมูล 1 ตัวอักษรออกทางจอภาพ
1: | #include<stdio.h> | #include<stdio.h> | ||
2: | ||||
4: | main(){ | main(){ | ||
5: | char ch; | char ch; | ||
6: | ch = getchar(); | scanf("%c",&ch); | ||
7: | putchar(ch); | printf("%c",ch); | ||
8: | } | } |
ถ้าผมป้อนตัวอักษร a ในโปรแกรมทั้ง2 นี้ก็จะได้ผลลัพธ์ดั้งต่อไปนี้
ผลลัพธ์โปรแกรม | ||
:a a |
ข้อความจำ | ||
เราสามารถใช้ผสมกันได้ เช่นถ้าคุณรับ โดย getchar() คุณสามารถแสดงโดยฟังก์ชั่น printf() ได้ หรือจะรับด้วย scanf() แล้วแสดงด้วย putchar(); ก็ได้ (ในกรณี เป็นการรับแสดงข้อมูล ตัวอักษร) |
นอกจากไอ้เจ้าfunction getchar() แล้วยังมีอีก2 ฟังก์ชั่นที่ใช้ในการรับขอมูลแบบตัวอักษรคือ
getch() : อ่าน 1 ตัวอักษรจากคีย์บอร์ด แต่ไม่แสดงตัวอักษรที่รับเข้ามาออก
ทางจอภาพ
getche() : อ่าน1 ตัวอักษรจากคีย์บอร์ด และแสดงตัวอักษรที่รับเข้ามาออก
ทางจอภาพ
ตัวอย่างต่อไปนี้ผมจะทำการเปรียบเทียบฟังก์ชั่น3 ตัวเพื่อให้ดูผลว่ามันเป็นยังไงนะครับ
1: | #include<stdio.h> | #include<stdio.h> | #include<stdio.h> | |||
2: | ||||||
4: | main(){ | main(){ | main(){ | |||
5: | char ch; | char ch; | char ch; | |||
6: | do{ | do{ | do{ | |||
7: | ch = getchar(); | ch = getch(); | ch = getche(); | |||
8: | }while(ch !='E' ); | }while( ch !='E'); | }while( ch !='E'); | |||
9: | } | } | } |
ผลลัพธ์โปรแกรม | ||||||
a b e d E | a b e d E |
โปรแกรมพวกนี้เป็นการวนลูปหรือเรียกกันว่าทำซ่ำซึ่งผมจะอธิบายใน บท คำสั่งควบคุมโปรแกรม นะครับม่อยากอธิบายในบทความนี้เดียวมันจะยาวจนน่าเกียจแถม เรื่องการรับข้อมูลยังไม่หมดอยู่ด้วย งั้นเรามาต่อกันเลยดีกว่า
นี้ผมจะเปรียบเทียบการทำงานเพื่อให้ศึกษาอาจจะช่วยได้บางเล็กน้อยนะครับ
function | กดEnter | แสดงผลหน้าจอ |
getchar() | yes | yes |
getch() | no | no |
getche() | no | yes |
นอกจาก printf()กับscanf() ก็ ยังมี gets() กับputs() ที่ใช้ในการรับและแสดงผลของ string ด้วยนะครับ
ฟังก์ชั่น gets() : ผมจะไม่บรรยายมาก เอาเป็นว่าเอาไว้ใช้รับค่า string นะครับ
ฟังก์ชั่น puts() : เอาไว้แสดงค่าของ string ที่รับมา ส่วนวิธีใช้ดูจากตัวอย่าง
อันที่สองได้เลยครับ
นี้คือตัวอย่างผมจะเปลียบเทียบการใช้ระหว่าง gets() กับ scanf() นะครับ
1: | #include<stdio.h> | #include<stdio.h> | ||
2: | ||||
4: | main(){ | main(){ | ||
5: | char name[20]; | char name[20]; | ||
6: | printf("You name?:"); | printf("You name?:"); | ||
7: | gets(name); | scanf("%s",name); | ||
8: | printf("hi %s",name); | printf("hi %s",name); | ||
9: | ||||
10: | } | } |
ผลลัพธ์โปรแกรม | ผลลัพธ์โปรแกรม | |||||
You name? : Konthai Kup hi Konthai Kup | You name? : Konthai Kup hi Konthai |
ตัวอย่างนี้จะแสดงผลการทำงานของ gets()และ puts() นะครับ
1: | #include<stdio.h> | |
2: | ||
4: | main(){ | |
5: | char name[20]; | |
6: | printf("You name?:"); | |
7: | gets(name); | |
8: | printf("hi you name:"); | |
9: | put(name); | |
10: | } |
ผลลัพธ์โปรแกรม | ||
You name?: Konthai nakup hi you name: Konthai nakup |
>> ตัวดำเนินการ
ทดสอบ
ตอบลบ