我想从控制台读取一些数字。数字将以这种方式出现 -
5 1 2 3 4 5
4 5 6 7 8
6 2 3 4 5 6 7
..............
EOF
起始编号表示该行中将出现多少个数字,即第一行的第一个数字为5,因此此行上将有5个数字。输入的结尾将由EOF(文件结尾)表示。
我想把整行读成一个字符串,然后将它们转换为数字,但我想知道还有其他方法可以做到这一点。
答案 0 :(得分:3)
“标准”答案为scanf()
。标准答案的问题在于它不允许您检查一行上是否有正确的数字。所以,你想要读取一条线并然后逐个转换它的想法对于错误检测来说要好得多。
看看How to use sscanf() in loops;那里的答案向您展示了您应该做的基本知识。这不完全是重复的。您将读取第一个值,用于标识该行中有多少条目,然后是代码,以便将多个条目读入数组,并在数据与其声明的格式不匹配时进行适当的诊断。
如果您负责数据格式,则应考虑删除计数字段 - 让计算机计算该行上的值。计算机擅长计数,它可以消除要检测和处理的错误源(因此它使编程更容易)。 (如果您确实更改了输入格式,则您的问题将成为链接问题的副本。)
答案 1 :(得分:2)
查看scanf
的文档:
int count, current, i;
while(scanf("%d", &count) > 0)
{
for(i = 0; i < count; i++)
{
scanf("%d", ¤t);
// store current
}
}