วิธีที่ดีกว่าในการอ่านหลาย int ใน C กว่า scanf


17

ฉันกำลังพยายามอ่าน ints 4 ตัวใน C ในการแข่งขันกอล์ฟและฉันก็กังวลกับความยาวของรหัสที่ฉันต้องแก้ไข:

scanf("%d%d%d%d",&w,&x,&y,&z)

นั่นคือ 29 ตัวอักษรซึ่งมีขนาดใหญ่มากเมื่อพิจารณาว่าขนาดรหัสทั้งหมดของฉันคือ 101 ตัวอักษร ฉันสามารถกำจัด int แรกได้เนื่องจากฉันไม่ต้องการมันดังนั้นฉันจึงได้รหัสนี้:

scanf("%*d%d%d%d",&x,&y,&z)

อันไหนคือ 27 ตัวอักษร แต่มันก็ยังคงยาว

ดังนั้นคำถามของฉันคือมีวิธีอื่น (เทคนิคฟังก์ชั่นสิ่งของ K&R) เพื่ออ่าน ints ที่ฉันไม่ทราบว่าสามารถช่วยลดรหัสบิตนี้ได้หรือไม่

ขอบคุณมาก.

แก้ไข: ผู้ใช้บางคนรายงานว่าคำถามของฉันคล้ายกับเคล็ดลับสำหรับการเล่นกอล์ฟใน C

ในขณะที่หัวข้อนี้มีข้อมูลที่เป็นประโยชน์มากมายในการย่อรหัส C แต่ก็ไม่เกี่ยวข้องกับกรณีการใช้งานจริงของฉันเนื่องจากไม่มีวิธีที่ดีกว่าในการอ่านอินพุต

ฉันไม่รู้ว่าจริง ๆ แล้วมีวิธีที่ดีกว่า scanf ในการอ่านจำนวนเต็ม (นั่นเป็นเหตุผลที่ฉันถามคำถามตั้งแต่แรก) แต่ถ้ามีฉันคิดว่าคำถามของฉันเกี่ยวข้องและแตกต่างจากทั่วโลกอย่างเพียงพอ เคล็ดลับและลูกเล่น

หากไม่มีวิธีที่ดีกว่าคำถามของฉันยังคงมีประโยชน์ในอนาคตอันใกล้หากมีคนหาทางออกที่ดีกว่า

EDIT2: ฉันกำลังมองหาโปรแกรมเต็มรูปแบบ (จึงไม่มีฟังก์ชั่นเคล็ดลับ) และ librairies ทั้งหมดที่เป็นไปได้ มันต้องเป็น C ไม่ใช่ C ++ ปัจจุบันโปรแกรมทั้งหมดของฉันมีลักษณะดังนี้:

main(w,x,y,z){scanf("%*d%d%d%d",&x,&y,&z)}

เทคนิคใด ๆ ก็ยินดีต้อนรับตราบใดที่มันสั้นรหัส (นี่คือรหัสกอล์ฟ :)) และตราบใดที่มันไม่ได้เป็น c ++


4
โดยปกติคุณสามารถส่งฟังก์ชั่นแทนโปรแกรมเต็มรูปแบบซึ่งช่วยให้คุณสามารถใช้ 4 ints เหล่านั้นเป็นข้อโต้แย้ง
Denker

ฉันเห็นขอบคุณสำหรับความคิดเห็นของคุณ แต่ในกรณีของฉันมันต้องเป็นโปรแกรมเต็มรูปแบบ
BusyBeingDelicious

12
1) @BusyBeingDelicious ยินดีต้อนรับสู่ PPCG! :) 2) ผู้มีสิทธิเลือกตั้งอย่างใกล้ชิดนี้ไม่ได้เป็นคำถามทั่วไปการเขียนโปรแกรม นี่คือเคล็ดลับคำถามที่ถามเพื่อขอความช่วยเหลือในการเล่นกอล์ฟรหัสซึ่งเป็นอย่างยิ่งในหัวข้อ
Martin Ender


3
เรียนผู้มีสิทธิเลือกตั้งอย่างใกล้ชิด: นี่เป็นหัวข้อที่ชัดเจนมาก ทำไมคุณยังพยายามปิดตัว
DJMcMayhem

คำตอบ:


2

คุณสามารถเขียนฟังก์ชั่นแทนโปรแกรมเป็นการส่งของคุณ ใน C คุณสามารถละเว้นintจากฟังก์ชันลายเซ็นได้:

f(w,x,y,z){}

9
OP กล่าวถึงในความคิดเห็นว่าในกรณีนี้จะต้องมีโปรแกรมเต็มรูปแบบ
Alex A.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.