C scanf请求格式
我需要在我的C程序中scanf
输入。 我是这样做的:
scanf("{[ %lf; %lf],[ %lf; %lf],[ %lf; %lf]}", ...)
但它对某些预期的输入无效。 它必须工作
{[0; 0],[10; 10],[15; 15]}
以及
{[4; -1],[7; 1.5],[4; 4]}
要么
但它需要printf("Bad input.\n")
如果有些{ } ; , [ ]
{ } ; , [ ]
缺少或额外。
听起来你只想忽略空格,所以在格式中添加空格可能会发生:
scanf(" { [%lf ;%lf ] , [%lf ;%lf ] , [%lf ;%lf ] }", ...)
唯一不需要它的地方就在%lf
之前,因为该说明符会自动跳过并忽略空格。 请务必检查返回值以确保匹配6个值。 不幸的是,这不会告诉你是否缺少尾随]
或}
。 为此,您可以在末尾添加额外的%n
说明符,并检查以确保它已设置:
int end = 0; if (scanf(" { [%lf ;%lf ] , [%lf ;%lf ] , [%lf ;%lf ] }%n", ..., &end), end > 0) { // successful read } else { // error }