คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 5
จาก
%s เป็นการอ้างตัวแปรแบบ string
ดังนั้นการกำหนดตัวแปรต้องอยู่ในรูป String คือ
แต่ใน 3-3 คุณไป สั่ง
ถ้าจะแก้ให้ staff เป็น array คุณต้องแก้สองจุดคือ
กำหนดตัวแปร staff ให้เป็น array
และ ระบุดัชนีตำแหน่ง ตอนสั่ง fscanf ให้เก็บข้อมูลลง staff
fscanf(sfile,"%s %s %d %d",&staff.name,&staff.sur,&staff.come,&staff.over);
%s เป็นการอ้างตัวแปรแบบ string
ดังนั้นการกำหนดตัวแปรต้องอยู่ในรูป String คือ
char name[20];
ตามที่ทำใน 3-3 ถูกต้องแล้วแต่ใน 3-3 คุณไป สั่ง
printf("%s %s %d %d",staff[0].name,staff[0].sur,staff[0].come,staff[0].over);
โดยที่ไม่ได้กำหนด staff ไว้ว่าเป็น array ดังนั้นไม่น่าจะ compile ผ่าน (ถ้ามันผ่าน แล้วรันได้ core dump คิดว่าอาจจะไปสับสนกับตัวที่ compile ไว้ก่อนหน้านั้น)ถ้าจะแก้ให้ staff เป็น array คุณต้องแก้สองจุดคือ
กำหนดตัวแปร staff ให้เป็น array
struct employee staff[10]; //เป็นการกำหนดให้ staff เป็น array เก็บข้อมูลชนิด employee ได้ 10 ตัว
// สิ่งที่ควรระวัง ขนาดของ array หลังจากสร้างแล้วจะเปลี่ยนแปลงไม่ได้ ดังนั้นต้องกำหนดให้เพียงพอกับจำนวนข้อมูลทั้งหมด
และ ระบุดัชนีตำแหน่ง ตอนสั่ง fscanf ให้เก็บข้อมูลลง staff
fscanf(sfile,"%s %s %d %d",&staff[i].name,&staff[i].sur,&staff[i].come,&staff[i].over);
// staff[i] เป็นการอ้างถึงตัวแปร staff ที่มีลักษณะเป็น array โดยระบุดัชนีเป็นตัวที่ i (ซึ่งค่า i นี้ได้มาจากการวนลูปคำสั่ง for นั่นเอง)
แสดงความคิดเห็น
โปรแกรมภาษาซี การเลือกแสดงค่าที่อ่านจากไฟล์ ช่วยหน่อยครับ
ชื่อ นามสกุล วันที่มาทำงาน เวลาที่ทำโอที >>> เช่น Songpol Pongrak 15 21 //บรรทัดที่3
ชื่อ นามสกุล วันที่มาทำงาน เวลาที่ทำโอที //บรรทัดที2
ชื่อ นามสกุล วันที่มาทำงาน เวลาที่ทำโอที //บรรทัดที่3
ชื่อ นามสกุล วันที่มาทำงาน เวลาที่ทำโอที //บรรทัดที่4
. . . .
. . . .
ผมจะอ่านข้อมูลในไฟล์ มาเก็บไว้ในตัวแปร แล้วแสดงค่าแค่คนใดคนหนึ่ง โดยที่รับค่าจากแป้นพิมพ์
แล้วนำ วันที่ทำงาน และ เวลาทำโอที มาคำนวณเงินเดือน เช่น
อยากทราบ เงินเดือนคนที่อยู่บรรทัดที่ 3
ให้ รับค่าจากแป้นเป็นเลข 3 แล้วนำข้อมูลบรรทัดที 3 มาคำนวน
แล้วแสดงผลทางหน้าจอแบบนี้ครับ
ชื่อ นามสกุล
มาทำงาน __วัน
มาทำโอที__ชั่วโมง
เงินเดือน__บาท
ค่าล่วงเวลา__บาท
เงินรวม__บาท
ครับ
ช่วยหน่อยครับ ลองมาหลายวิธีไม่ได้ เริ่มท้อเลยมาถามดูครับ