การอ่านอักขระ
getchar และ putchar
การอ่านอักขระ เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
การอ่านอักขระทีละตัว
C มี getchar() สำหรับอ่านอักขระทีละตัวจากอินพุตมาตรฐาน และ putchar() สำหรับเขียนอักขระทีละตัวไปยังเอาต์พุตมาตรฐาน
ทั้งสองฟังก์ชันอยู่ใน <stdio.h>
#include <stdio.h>
int main(void) {
putchar('H');
putchar('i');
putchar('\n');
return 0;
}พื้นฐานของ putchar
putchar(c) เขียนอักขระ c และคืนค่าอักขระที่เขียน หรือคืนค่า EOF เมื่อเกิดข้อผิดพลาด
นี่เป็นวิธีที่ง่ายที่สุดในการส่งออกไบต์เดียว
#include <stdio.h>
int main(void) {
for (char c = 'A'; c <= 'E'; c++) {
putchar(c);
}
putchar('\n');
return 0;
}getchar คืนค่าเป็น int
getchar() คืนค่าเป็น int ไม่ใช่ char เรื่องนี้สำคัญเพราะฟังก์ชันต้องสามารถคืนค่า EOF ซึ่งแตกต่างจากอักขระจริงทุกตัวได้
จัดเก็บผลลัพธ์ไว้ใน int เสมอ
#include <stdio.h>
int main(void) {
int c = 'A';
printf("Stored value: %d\n", c);
return 0;
}EOF คืออะไร
EOF หมายถึงจุดสิ้นสุดของไฟล์ getchar() จะคืนค่านี้เมื่อไม่มีอินพุตเหลืออยู่อีก
โดยทั่วไปค่านี้คือ -1 ดังนั้น getchar จึงใช้ int เพื่อไม่ให้สับสนกับไบต์ 255
#include <stdio.h>
int main(void) {
printf("EOF has value %d\n", EOF);
return 0;
}รูปแบบลูปการอ่าน
รูปแบบมาตรฐานจะอ่านอักขระจนกว่าจะพบ EOF เนื่องจากที่นี่ไม่มีอินพุตแบบโต้ตอบ ลูปจึงจบทันที แต่โครงสร้างนี้เป็นรูปแบบมาตรฐาน
- กำหนดค่าภายในเงื่อนไข
- เปรียบเทียบกับ
EOF
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(c);
}
printf("Reached end of input\n");
return 0;
}การนับอักขระ
งานที่พบได้บ่อยคือการนับจำนวนอักขระที่อ่านได้ ให้เพิ่มค่าตัวนับภายในลูปการอ่าน
#include <stdio.h>
int main(void) {
int c;
long count = 0;
while ((c = getchar()) != EOF) {
count++;
}
printf("Read %ld characters\n", count);
return 0;
}การสะท้อนเป็นตัวพิมพ์ใหญ่
คุณสามารถแปลงอักขระแต่ละตัวก่อนเขียนได้ ในที่นี้อักขระทุกตัวที่อ่านจะถูกแปลงเป็นตัวพิมพ์ใหญ่ด้วย toupper
#include <stdio.h>
#include <ctype.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(toupper(c));
}
return 0;
}การนับบรรทัด
การนับอักขระขึ้นบรรทัดใหม่จะบอกว่ามีการอ่านมากี่บรรทัด ให้ตรวจสอบอักขระแต่ละตัวกับ '\n'
#include <stdio.h>
int main(void) {
int c;
int lines = 0;
while ((c = getchar()) != EOF) {
if (c == '\n') lines++;
}
printf("Lines: %d\n", lines);
return 0;
}การส่งอักขระกลับ
ungetc(c, stdin) ส่งอักขระหนึ่งตัวกลับไปไว้ในกระแสอินพุต เพื่อให้การอ่านครั้งถัดไปได้รับอักขระตัวนั้นอีกครั้ง
วิธีนี้มีประโยชน์เมื่ออ่านอักขระเกินมาหนึ่งตัวขณะสแกน
#include <stdio.h>
int main(void) {
ungetc('X', stdin);
int c = getchar();
printf("Got back: %c\n", c);
return 0;
}getchar กับ scanf
getchar ช่วยให้ควบคุมข้อมูลในระดับไบต์ได้อย่างละเอียด ขณะที่ scanf แยกวิเคราะห์อินพุตตามรูปแบบ
สำหรับการประมวลผลทีละอักขระ เช่น ตัวกรองและตัวแบ่งคำโทเค็น getchar เป็นเครื่องมือที่เหมาะสม
#include <stdio.h>
int main(void) {
int c = '5';
if (c >= '0' && c <= '9') {
printf("It is a digit: %c\n", c);
}
return 0;
}โครงร่างตัวกรองอย่างง่าย
ตัวกรองจะอ่านจากอินพุต แปลงข้อมูล แล้วเขียนไปยังเอาต์พุต โครงร่างนี้จะลบช่องว่างทั้งหมดออกจากกระแสอินพุต
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
if (c != ' ') {
putchar(c);
}
}
return 0;
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่องการอ่านอักขระ
สรุปทบทวน
คุณได้เรียนรู้การอ่านและเขียนอักขระ:
getchar()อ่านอักขระหนึ่งตัวและคืนค่าเป็นintputchar(c)เขียนอักขระหนึ่งตัวEOFเป็นสัญญาณสิ้นสุดอินพุต ให้ใช้ลูปwhile ((c = getchar()) != EOF)ungetcสามารถส่งอักขระกลับไปยังกระแสข้อมูลได้
เรียนรู้ C ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 39
- บทเรียน
- 144
คำถามที่พบบ่อย
บทเรียน “การอ่านอักขระ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอ่านอักขระ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอ่านอักขระ”
getchar และ putchar คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การอ่านอักขระ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ