C 如何在stdin中从同一行读取多次?

C 如何在stdin中从同一行读取多次?,c,scanf,C,Scanf,我想从C中的同一行读取多次,例如,我的输入是 1 2 3 我想像这样读 scanf("%d" , a); scanf("%d%d" , b, c); 如果我这样做,我会得到一个运行时错误,在pascal中我只使用read而不是readln,这里它会自动转到第二行,而在第二行中没有任何内容,这就是为什么我会得到一个运行时错误,我猜…很抱歉没有将此作为注释发布,但我不允许这样做 为什么不把它存储在一个变量中,然后进行解析呢? 处理同一行中的数据不需要调用scanf两次。它应该是scanf(“%d

我想从C中的同一行读取多次,例如,我的输入是

1 2 3
我想像这样读

scanf("%d" , a);
scanf("%d%d" , b, c);

如果我这样做,我会得到一个运行时错误,在pascal中我只使用read而不是readln,这里它会自动转到第二行,而在第二行中没有任何内容,这就是为什么我会得到一个运行时错误,我猜…

很抱歉没有将此作为注释发布,但我不允许这样做

为什么不把它存储在一个变量中,然后进行解析呢?
处理同一行中的数据不需要调用scanf两次。

它应该是
scanf(“%d”、&a);scanf(“%d%d”、&b和&c)
scanf()
仅在缓冲区中的换行符或其他空白字符处停止,它不会自动转到第二行。

因为,例如,如果我不知道一行中是否有1个或多个值,例如,我输入1 a 2 1 b c,我必须首先读取第一个数字,如果它是一个,我再次读取其他2个值,如果它是2,我不再读取。如果我在“2”时尝试读取3次,我也会得到一个运行时错误,它应该是
scanf(“%d”,&a);scanf(“%d%d”、&b和&c)