คำอธิบายปัญหา
สมมติว่าต้องการรับอินพุต 3 แบบ: ตัวอักษรเดี่ยว (character), สตริงไม่มีช่องว่าง (string), และประโยคมีช่องว่าง (sentence) ในภาษา C โดยขนาดสูงสุดของสตริงคือ 500 ตัวอักษร
ตัวอย่าง
อินพุต:
character = 'T' string = "ProgrammingLanguage" sentence = "I love programming through C"
เอาต์พุต:
Your character: T Your string: ProgrammingLanguage Your sentence: I love programming through C
ขั้นตอนการแก้ปัญหา
- ตัวอักษร: ใช้ scanf("%c", &character)
- สตริง: ใช้ scanf("%s", string)
- เคลียร์บัฟเฟอร์ด้วย fflush(stdin) (อาจจำเป็นบนบางระบบ)
- ประโยค: ใช้ fgets(sentence, 500, stdin) รับทั้งบรรทีกรวมช่องว่าง
โค้ดตัวอย่าง
#include <stdio.h>
int main() {
char character;
char string[500];
char sentence[500];
scanf("%c", &character);
scanf("%s", string);
fflush(stdin);
fgets(sentence, 500, stdin);
printf("Your character: %c\n", character);
printf("Your string: %s\n", string);
printf("Your sentence: %s\n", sentence);
return 0;
}
อินพุต
T ProgrammingLanguage I love programming through C
เอาต์พุต
Your character: T Your string: ProgrammingLanguage Your sentence: I love programming through C
หมายเหตุ
fflush(stdin) ไม่ใช่มาตรฐาน C แนะนำให้ใช้วิธีอื่น เช่น อ่านตัว newline ที่ค้างอยู่ด้วย getchar() หรือใช้ fgets() ตั้งแต่แรก