ผมอ่านในเดนนิสริตชี่ภาษา C Programmingหนังสือที่intจะต้องนำมาใช้สำหรับตัวแปรที่จะถือ EOF - เพื่อทำให้มันมีขนาดใหญ่พอที่จะสามารถเก็บค่า EOF - charไม่ได้ แต่รหัสต่อไปนี้ทำงานได้ดี:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
เมื่อไม่มีอินพุตให้getcharส่งคืน EOF และในโปรแกรมข้างต้นตัวแปรที่cมีประเภทถ่านสามารถเก็บไว้ได้สำเร็จ
ทำไมจึงใช้งานได้ ตามคำอธิบายในหนังสือข้างต้นรหัสไม่ควรทำงาน
0xffรหัสนี้มีแนวโน้มที่จะล้มเหลวถ้าคุณอ่านตัวอักษรที่มีค่า การจัดเก็บผลลัพธ์getchar()ในการintแก้ปัญหานั้น คำถามของคุณเหมือนกับคำถาม 12.1 ในคำถามที่พบบ่อย comp.lang.cซึ่งเป็นแหล่งข้อมูลที่ยอดเยี่ยม ( main()ควรจะเป็นint main(void)และจะไม่เจ็บที่จะเพิ่มreturn 0;ก่อนปิด})