C 如何读取混合分数和正常分数?
如何读取C 如何读取混合分数和正常分数?,c,scanf,fractions,C,Scanf,Fractions,如何读取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, siz
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
,从未使用过,有助于确保解析完整的输入行