比scanf更好的在C中读取多个int的方法


17

我试图在高尔夫挑战赛中以C语言读取4个整数,但我为解决该问题所需的代码长度感到困扰:

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

那是29个字符,考虑到我的总代码大小是101个字符,这是巨大的。我可以摆脱第一个int,因为我真的不需要它,所以我得到了以下代码:

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

这是27个字符,但仍然很长。

所以我的问题是,还有其他方法(技巧,函数,K&R东西)可以读取我不知道的整数,这可以帮助我减少这段代码吗?

非常感谢。

编辑:一些用户报告说我的问题类似于C中打高尔夫球的技巧

尽管本主题包含许多有助于缩短C代码的有用信息,但它与我的实际用例无关,因为它没有提供更好的读取输入的方法。

我不知道是否有比scanf更好的方法来读取多个整数(这就是为什么我首先要问这个问题的原因),但是如果有的话,我认为我的问题是相关的,并且与全局问题完全不同技巧和窍门。

如果没有更好的方法,那么如果有人找到更好的解决方案,那么我的问题在不久的将来仍然有用。

EDIT2:我正在寻找一个完整的程序(因此没有功能把戏)和所有可能的库。它必须是C,而不是C ++。目前,我的整个程序如下所示:

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

只要能缩短代码(这是代码golf :))并且只要它不是c ++,任何技巧都可以接受


4
通常,您可以提交一个函数而不是完整的程序,从而可以将这4个整数用作参数。
Denker

我知道了,谢谢您的评论,但就我而言,它必须是一个完整的程序。
BusyBeingDelicious

12
1)@BusyBeingDelicious,欢迎来到PPCG!:) 2)对于亲密的选民来说,这不是一个一般的编程问题。这是一个提示问题,它要求获得有关高尔夫主题的绝对帮助的代码。
马丁·恩德

1
可能的重复提示在C高尔夫
迈戈

3
亲爱的投票人:这是非常明确的话题。为什么您仍要尝试关闭此功能?
DJMcMayhem

Answers:


2

您可以编写函数而不是程序作为提交。在C中,您可以省略int函数签名:

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

9
OP在评论中提到,在这种情况下,它必须是完整程序。
Alex A.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.