我需要在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")
丢失或多余,则需要{ } ; , [ ]
。
答案 0 :(得分:4)
像您这样的声音只想忽略空格,因此请在格式中添加可能出现空格的地方:
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
}