如何从中读取混合数字和分数stdin
?例如:
int whol, num, den;
scanf("%d %d/%d", &whol, &num, &den);
但是,如果用户要输入非混合分数,则必须在开头添加“ 0”。
如何允许两种形式:%d/%d
和%d %d/%d
?
也许我不应该scanf()
为此使用?
优选的做法是,首先读取整个行到缓冲区第一,然后解析它。例如,
char buf[80];
char dummy[80];
// ...
if (!fgets(buf, sizeof buf, stdin) {
// handle error
}
else if (sscanf(buf, "%d%d/%d%s", &whol, &num, &den, dummy) == 3) {
// ... handle mixed fraction
}
else if (sscanf(buf, "%d/%d%s", &num, &den, dummy) == 2) {
// ... handle normal fraction
}
else {
// ... error, bad input
}
dummy
从未使用过的多余数组有助于确保完整的输入行被解析。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句