Cách tốt hơn để đọc nhiều int trong C so với scanf


17

Tôi đang cố đọc 4 ints trong C trong một thử thách chơi gôn và tôi bị làm phiền bởi độ dài của mã mà tôi cần để giải quyết nó:

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

đó là 29 ký tự, rất lớn khi xét rằng tổng kích thước mã của tôi là 101 ký tự. Tôi có thể loại bỏ int đầu tiên vì tôi không thực sự cần nó, vì vậy tôi nhận được mã này:

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

đó là 27 ký tự, nhưng nó vẫn còn dài.

Vì vậy, câu hỏi của tôi là, có cách nào khác (thủ thuật, chức năng, công cụ K & R) để đọc ints mà tôi không biết có thể giúp tôi giảm chút mã này không?

Cảm ơn rất nhiều.

EDIT: một số người dùng đã báo cáo rằng câu hỏi của tôi tương tự như Mẹo chơi gôn trong C

Mặc dù chủ đề này chứa nhiều thông tin hữu ích để rút ngắn mã C, nhưng nó không liên quan đến trường hợp sử dụng thực tế của tôi vì nó không cung cấp cách đọc đầu vào tốt hơn.

Tôi không biết có thực sự có cách nào tốt hơn scanf để đọc nhiều số nguyên không (đó là lý do tại sao tôi đặt câu hỏi ngay từ đầu), nhưng nếu có, tôi nghĩ rằng câu hỏi của tôi có liên quan và đủ khác so với toàn cầu các mẹo và thủ thuật.

Nếu không có cách nào tốt hơn, câu hỏi của tôi vẫn có thể hữu ích trong tương lai gần nếu ai đó tìm ra giải pháp tốt hơn.

EDIT2: Tôi đang tìm kiếm một chương trình đầy đủ (vì vậy không có thủ thuật chức năng nào) và tất cả các lời nói dối đều có thể. Nó cần phải là C, không phải C ++. Hiện tại, toàn bộ chương trình của tôi trông như thế này:

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

mọi thủ thuật đều được hoan nghênh, miễn là nó rút ngắn mã (đây là mã golf :)) và miễn là nó không phải là c ++


4
Thông thường bạn có thể gửi một hàm thay vì các chương trình đầy đủ cho phép bạn lấy 4 int đó làm đối số.
Denker

Tôi thấy, cảm ơn vì nhận xét của bạn, nhưng trong trường hợp của tôi, nó cần phải là một chương trình đầy đủ.
BusyByingDelicy

12
1) @BusyByingDelicy, chào mừng bạn đến với PPCG! :) 2) Đối với các cử tri thân thiết, đây không phải là một câu hỏi lập trình chung . Đây là một câu hỏi mẹo yêu cầu trợ giúp mã golf hoàn toàn về chủ đề .
Martin Ender

1
Có thể trùng lặp các Mẹo để chơi gôn trong C
Mego

3
Kính gửi cử tri thân thiết: Điều này rất rõ ràng về chủ đề. Tại sao bạn vẫn cố gắng để đóng cửa này?
DJMcMayhem

Câu trả lời:


2

Bạn có thể viết một hàm thay vì một chương trình như trình của bạn. Trong C, bạn có thể bỏ qua intchữ ký hàm:

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

9
OP đã đề cập trong một bình luận rằng trong trường hợp này, nó cần phải là một chương trình đầy đủ.
Alex A.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.