gpt4 book ai didi

c - 如何同时读带分数和正分数?

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:23 25 4
gpt4 key购买 nike

如何从 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 有助于确保解析完整的输入行。

关于c - 如何同时读带分数和正分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27207770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com