ในภาษา C ทั้ง scanf() และ gets() ถูกนิยามเพื่อรับอินพุตจากแหล่งภายนอกและส่งต่อให้ระบบเป็นอินพุต ตอนนี้มีความแตกต่างด้านลักษณะเฉพาะระหว่างทั้งสองฟังก์ชัน
ความแตกต่างสำคัญระหว่าง scanf() และ gets() ใน C ดังนี้ −
| ลำดับ | Key | scanf() function | gets() function |
|---|---|---|---|
| 1 | Definition | scanf() อ่านอินพุตจากแป้นพิมพ์และเก็บตาม format specifier ที่กำหนด อ่านจนกว่าจะเจอ whitespace, newline หรือ EOF | gets() รับอินพุตจากแป้นพิมพ์จนกว่าจะเจอ newline หรือ EOF whitespace ถูกนับเป็นส่วนหนึ่งของอินพุต |
| 2 | WhiteSpace | ใน scanf() whitespace ไม่ถูกนับเป็นตัวอักษรอินพุต และหยุดอ่านหากเจอ whitespace ระหว่างทาง | ใน gets() whitespace ถูกนับเป็นตัวอักษรอินพุต และไม่หยุดอ่านแม้เจอ whitespace ระหว่างทาง |
| 3 | Syntax | scanf() รับ format string และ list ของ address ตัวแปร เช่น scanf("%d", &number); | gets() รับชื่อตัวแปรเพื่อเก็บค่าที่รับมา เช่น gets(name); |
| 4 | DataType | scanf() อ่านค่าได้หลายค่าและหลายชนิดข้อมูล | gets() รับได้เฉพาะ character string เท่านั้น |