บทนี้จะกล่าวถึงวิธีการรับข้อมูลจาก คีย์บอร์ดเพราะรูปแบบการรับเข้าข้อมูลจะขึ้นอยู่กับ รูปแบบของชนิดข้อมูลที่เราจะรับ โดยที่เราจำเป็นต้องเลือกให้ถูกรูปแบบในการใช้ด้วยนะครับ เพราะท่าผิดรูปแบบ ก็จะทำให้โปรแกรม เกิด 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 | ||
>> ตัวดำเนินการ
ทดสอบ
ตอบลบ