C'de birden çok int okumayı scanf'den daha iyi bir yol


17

Bir golf meydan okuma C 4 ints okumaya çalışıyorum ve ben bunu çözmek için gereken kod uzunluğu ile rahatsız:

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

Bu 29 karakterdir, bu da toplam kod boyutumun 101 karakter olduğu düşünüldüğünde çok büyüktür. Gerçekten ihtiyacım yok beri ilk int kurtulabilirsiniz, bu yüzden bu kodu almak:

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

27 karakterden oluşuyor, ama yine de uzun.

Benim sorum şu, bilmediğim ints'ı okumanın başka bir yolu var mı (hileler, fonksiyonlar, K&R şeyler)?

Çok teşekkürler.

EDIT: bazı kullanıcılar sorumun C Golf için ipuçları benzer olduğunu bildirdi

Bu konu C kodlarını kısaltmak için birçok yararlı bilgi içeriyor olsa da, girişleri okumak için daha iyi bir yol sağlamadığı için gerçek kullanım durumumla ilgili değil.

Aslında birden fazla tamsayıyı okumak için scanf'den daha iyi bir yol olup olmadığını bilmiyorum (bu yüzden soruyu ilk etapta soruyorum), ancak varsa, sorumun alakalı olduğunu ve küreselden yeterince farklı olduğunu düşünüyorum Ipuçları ve Püf noktaları.

Daha iyi bir yol yoksa, birisi daha iyi bir çözüm bulursa sorum yakın gelecekte faydalı olabilir.

EDIT2: Ben tam bir program (böylece hiçbir işlev hile) ve tüm kütüphaneler mümkün arıyorum. C ++ değil C olmalı. Şu anda, tüm programım şöyle:

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

herhangi bir hile hoş geldiniz, sürece kodu kısaltmak (bu kod golf :)) ve sürece c ++ değil


4
Genellikle bu 4 int'i bağımsız değişken olarak almanıza izin veren tam programlar yerine bir işlev gönderebilirsiniz.
Denker

Yorumunuz için teşekkürler, ama benim durumumda, tam bir program olması gerekiyor.
BusyBeingDelicious

12
1) @BusyBeingDelicious, PPCG'ye hoş geldiniz! :) 2) Yakın seçmenlere göre, bu genel bir programlama sorusu değildir . Bu kesinlikle konuyla ilgili golf kodu yardım isteyen bir ipuçları sorudur .
Martin Ender

1
C
Mego'da

3
Değerli yakın seçmenler: Bu konu hakkında çok açık. Neden hala bunu kapatmaya çalışıyorsun?
DJMcMayhem

Yanıtlar:


2

Sunumunuz olarak program yerine bir fonksiyon yazabilirsiniz. C intolarak işlev imzalarından çıkartabilirsiniz :

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

9
OP bir yorumda bu durumda tam bir program olması gerektiğini belirtti.
Alex A.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.