【发布时间】:2014-04-21 04:34:52
【问题描述】:
我有一个带有 scanf() 的 while 循环,它读取单个 char* 值:
char c[9];
while(c != 'q')
{
scanf("%s", c);
}
然后将c 与多个单字符字符串进行比较以确定应该执行哪个操作。
这个 scanf 可以接收多个参数,我需要知道何时只向函数提供一个参数,或者是否有多个参数,但是每当我输入多个参数时,while 循环会为输入的每个参数单独运行.
编辑:
假设我输入“a b c d”之类的内容,while 循环将处理 c="a"、c="b"、c="c" 和 c="d",这很好,但我需要知道我输入了 4 个非上次扫描中的空白元素。
所以第一个参数是我要运行的命令,它是一个字母,然后是该命令的 0 到 3 个参数,它们是字符串或数字:
例子:
"a box 1 2"
当参数的数量固定时,我只是使用一个布尔值来知道 c 的下一个 x 值应该是参数,但是我有一个可以接受 0 或 1 个参数的函数,例如
"b" is acceptable.
"b 25" is acceptable.
b 基本上是一个搜索函数,其中可选参数是要检查的查询。如果没有提供参数,它会列出所有项目。因此在这种情况下布尔值不起作用,因为参数的数量不固定。
所以我需要知道,如果我输入:
"a 1 2 3" x=4
"a 1" x=2
"a" x=1
【问题讨论】:
-
我不明白你在问什么。你知道有多少参数提供给
scanf,因为你编写了代码。无论如何,转换次数取决于格式字符串,而不是其他参数。如果您传递的参数多于所需参数,则多余的参数将被忽略。 -
在这种情况下,
scanf()总是正好有两个参数。确定函数接收多少参数的方法是查看您的代码并用您的眼球搜索有问题的函数调用。此外,您将chars 数组与单个char进行比较完全没有意义。 -
@Barmar 基本上 scanf 函数允许我为该函数输入多个参数,并且每当我这样做时,它会分别循环遍历每个参数的 while 循环,所以我无法知道最初向 scanf 提供了多少参数。
-
@David,改变 'char c[9];' 会有帮助吗到'char c;'并使用 'scanf("%c", &c);'代替?
-
您似乎想输入一行 行 文本,例如“a b c d\n”,然后代码确定有 4 个非空白
char参数,每个参数长度一:'a',b','c','d'。然后它处理这 4 个并重复或停止。对吗?