8.4 การรับข้อมูลจากคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในโครงสร้าง บางครั้งเราอาจจะต้องรับข้อมูลผ่านทางคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในข้อมูลแบบโครงสร้าง ซึ่งมีวิธีการรับข้อมูลดังโปรกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่ 8.3 แสดงการรับข้อมูลจากคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในโครงสร้าง และแสดงออกจอภาพ
| | | | |
|
/* ipstruc1.c */ #include <stdio.h> /* gets() in this file */ /* บรรทัดที่ 1 */ #include <stdlib.h> /* atoi(),atof() in this file */ /* บรรทัดที่ 2 */ #include <conio.h> /* บรรทัดที่ 4 */ void main(void) /* บรรทัดที่ 5 */ { /* บรรทัดที่ 6 */ struct person /* บรรทัดที่ 7 */ { /* บรรทัดที่ 8 */ char name[20]; /* บรรทัดที่ 9 */ float salary; /* บรรทัดที่ 10 */ int age; /* บรรทัดที่ 11 */ }; /* บรรทัดที่ 12 */ struct person one; /* บรรทัดที่ 13 */ char numstr[81]; /* บรรทัดที่ 14 */ clrscr(); /* บรรทัดที่ 15 */ printf("\n *** Person Data ***\n\n Enter name : "); /* บรรทัดที่ 16 */ gets(one.name); /* บรรทัดที่ 17 */ printf("Enter salary : "); /* บรรทัดที่ 18 */ gets(numstr); /* บรรทัดที่ 19 */ one.salary=atof(numstr); /* บรรทัดที่ 20 */ printf("Enter age : "); /* บรรทัดที่ 21 */ gets(numstr); /* บรรทัดที่ 22 */ one.age=atoi(numstr); /* บรรทัดที่ 23 */ printf("\n\nName = %s\n",one.name); /* บรรทัดที่ 24 */ printf("Salary = %f\n",one.salary); /* บรรทัดที่ 25 */ printf("Age = %d\n",one.age); /* บรรทัดที่ 26 */ printf("\n\nPress any key back to program..."); /* บรรทัดที่ 27 */ getch(); /* บรรทัดที่ 28 */ } /* บรรทัดที่ 29 */ | |
| | |
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 8.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 ประกาศข้อมูลแบบโครงสร้าง โดยที่ person เป็นชื่อข้อมูลแบบโครงสร้าง
บรรทัดที่ 13 ประกาศตัวแปรโครงสร้างชื่อ one
บรรทัดที่ 17 รับข้อมูลที่ผู้ใช้เติมจากคีย์บอร์ด แล้วนำไปเก็บไว้ในตัวแปร name ภายในโครงสร้าง one
บรรทัดที่ 19 และ 20 รับข้อมูลที่ผู้ใช้เติมจากคีย์บอร์ด แล้วนำไปเก็บไว้ในตัวแปร numstr แล้วแปลงค่าที่รับเข้ามาเป็นจำนวนทศนิยม ไปเก็บไว้ในตัวแปร salary ภายในโครงสร้าง one
บรรทัดที่ 22 และ 23 รับข้อมูลที่ผู้ใช้เติมจากคีย์บอร์ด แล้วนำไปเก็บไว้ในตัวแปร numstr แล้วแปลงค่าที่รับเข้ามาเป็นจำนวนเต็ม ไปเก็บไว้ในตัวแปร age ภายในโครงสร้าง one
บรรทัดที่ 24 และ 26 นำค่าตัวแปร name, salary และ age ภายในโครงสร้าง one แสดงออกที่จอภาพ
โปรแกรมตัวอย่างที่ 8.4 แสดงการรับข้อมูลจากคีย์บอร์ดเพื่อนำไปเก็บไว้ในตัวแปรภายในโครงสร้าง และคัดลอกจากโครงสร้างหนึ่งไปอีกโครงสร้างหนึ่งแล้วแสดงผลออกจอภาพ
| | | | |
|
/* ipstru2.c */ #include <stdio.h> /* gets() in this file */ /* บรรทัดที่ 1 */ #include <stdlib.h> /* atoi(),atof() in this file */ /* บรรทัดที่ 2 */ #include <conio.h> /* บรรทัดที่ 3 */ void main(void) /* บรรทัดที่ 4 */ { /* บรรทัดที่ 5 */ struct person /* บรรทัดที่ 6 */ { /* บรรทัดที่ 7 */ char name[20]; /* บรรทัดที่ 8 */ float salary; /* บรรทัดที่ 9 */ int age; /* บรรทัดที่ 10 */ }; /* บรรทัดที่ 11 */ struct person one ,two; /* บรรทัดที่ 12 */ char numstr[81]; /* บรรทัดที่ 13 */ clrscr(); /* บรรทัดที่ 14 */ printf("\n *** Person Data ***\n\n Enter name : "); /* บรรทัดที่ 15 */ gets(one.name); /* บรรทัดที่ 16 */ printf("Enter salary : "); /* บรรทัดที่ 17 */ gets(numstr); /* บรรทัดที่ 18 */ one.salary=atof(numstr); /* บรรทัดที่ 19 */ printf("Enter age : "); /* บรรทัดที่ 20 */ gets(numstr); /* บรรทัดที่ 21 */ one.age=atoi(numstr); /* บรรทัดที่ 22 */ two = one; /*copy struct one to struct two*/ /* บรรทัดที่ 23 */ printf("\n\nName1 = %s\n",one.name); /* บรรทัดที่ 24 */ printf("Salary1 = %f\n",one.salary); /* บรรทัดที่ 25 */ printf("Age1 = %d\n",one.age); /* บรรทัดที่ 26 */ printf("\n\nName2 = %s\n",two.name); /* บรรทัดที่ 27 */ printf("Salary2 = %f\n",two.salary); /* บรรทัดที่ 28 */ printf("Age2 = %d\n",two.age); /* บรรทัดที่ 29 */ printf("\n\nPress any key back to program..."); /* บรรทัดที่ 30 */ getch(); /* บรรทัดที่ 31 */ } /* บรรทัดที่ 32 */ | |
| | |
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 8.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 23 สำหรับคำสั่ง two = one; ที่อยู่ในโปรกรม ipstru2.c เป็นคำสั่งให้คัดลอกข้อมูลที่อยู่ในตัวแปรทุกตัวภายในโครงสร้าง one ไปเก็บไว้ในโครงสร้าง two โดยมีค่าข้อมูลเหมือนกันทุกประการ (ดูรูปที่ 8.3 ประกอบความเข้าใจ)
0 ความคิดเห็น:
แสดงความคิดเห็น