gpt4 book ai didi

c - 可变扫描输入

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:15 34 4
gpt4 key购买 nike

您将如何处理可变数量的 scanf 输入?我正在扫描命令,其中一些是 1.word 命令,但有些需要数字参数。 scanf 是否允许以下​​操作?

 scanf(" %s %d", command, argument);

如果只输入一个值,是否会忽略“参数”?我想到的另一个选择是

 scanf(" %s", command)
if (strcmp(command, "somethin") {
scanf("%d", argument); }

但这会创建一个换行符吗?终端必须以“>命令参数”的形式接收输入所以,我的问题是,如何解决输入数量可变的问题。

最佳答案

不,它不会“创建换行符”。 scanf 完全不知道任何换行符。 scanf 将输入流视为由空格分隔的线性数据序列。换行只是空白,与其他任何空白没有区别。唯一可以“看到”换行符的 scanf 格式说明符是 %c%[]。您的 %s%d 完全与换行无关。

这意味着您的第二个示例是正确的(在 scanf 的自然限制内)。它不会“创建换行符”。如果您在一行中提供输入(如 somethin 42),它将读取一行。

您实际上可能会遇到“相反”的问题:如果用户忘记在一行中输入所需的参数,下一个 scanf 将在下一行等待它。在下一行。在下一行......直到他的用户最终提供它。我不确定这种行为是否适合您。如果没有,那么更好的办法是通过 fgets 使用专用的基于行的输入,然后手动解析该行。

附言没有理由在 %s%d 前加上空格。

关于c - 可变扫描输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43292450/

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