[^:]:scanf格式字符串的含义

[^:]:scanf格式字符串的含义,c,scanf,C,Scanf,我在一些代码中发现了这一点,但无法理解它的作用: scanf("%[^:]:%[^:]:%[^:\n]", a, b, c); 在C文档中没有提到[^:]:格式字符串,我很困惑。格式字符串%[…]用于指定可能的字符。例如,%[A-DF]表示A、B、C、D和F。开头的“^”表示除指定字符外的任何字符。因此,第一个格式字符串用于读取除冒号以外的字符。接下来是冒号,以此类推。您可以测试scanf的以下输入: Adam:And:Apple 格式字符串%[..]用于指定可能的字符。例如,%[A-DF]

我在一些代码中发现了这一点,但无法理解它的作用:

scanf("%[^:]:%[^:]:%[^:\n]", a, b, c);

在C文档中没有提到
[^:]:
格式字符串,我很困惑。

格式字符串%[…]用于指定可能的字符。例如,%[A-DF]表示A、B、C、D和F。开头的“^”表示除指定字符外的任何字符。因此,第一个格式字符串用于读取除冒号以外的字符。接下来是冒号,以此类推。您可以测试scanf的以下输入:

Adam:And:Apple

格式字符串%[..]用于指定可能的字符。例如,%[A-DF]表示A、B、C、D和F。开头的“^”表示除指定字符外的任何字符。因此,第一个格式字符串用于读取除冒号以外的字符。接下来是冒号,以此类推。您可以测试scanf的以下输入:

Adam:And:Apple

格式字符串%[..]用于指定可能的字符。例如,%[A-DF]表示A、B、C、D和F。开头的“^”表示除指定字符外的任何字符。因此,第一个格式字符串用于读取除冒号以外的字符。接下来是冒号,以此类推。您可以测试scanf的以下输入:

Adam:And:Apple

格式字符串%[..]用于指定可能的字符。例如,%[A-DF]表示A、B、C、D和F。开头的“^”表示除指定字符外的任何字符。因此,第一个格式字符串用于读取除冒号以外的字符。接下来是冒号,以此类推。您可以测试scanf的以下输入:

Adam:And:Apple

您应该记住的重要一点是,scanf()函数接受参数的指定方式。

例如: scanf(“%d%d”、&a和&b); 假设a和b是整数。
在命令行中,您必须输入a,然后输入空格,然后输入b。因为您在两个“%d”之间指定了一个空格。如果给n个空格作为其他字符,则必须在这些字符之间输入,然后才能接受该值。 因此,在你的情况下: 您输入的字符串中不包含“:”。 如果您想输入其中包含“:”的字符串,请考虑此情况。 例如: “some:init”是字符串,然后在第一个%[^:]中存储字符串“some”,然后是“:”,然后在第二个%[^:]中存储init。然后它再等待一个“:”和不包含“:”的字符串。 最终接受这种格式的输入不会获取任何东西。
唯一重要的是如何将其打印到控制台。

重要的是,scanf()函数接受参数的指定方式。

例如: scanf(“%d%d”、&a和&b); 假设a和b是整数。
在命令行中,您必须输入a,然后输入空格,然后输入b。因为您在两个“%d”之间指定了一个空格。如果给n个空格作为其他字符,则必须在这些字符之间输入,然后才能接受该值。 因此,在你的情况下: 您输入的字符串中不包含“:”。 如果您想输入其中包含“:”的字符串,请考虑此情况。 例如: “some:init”是字符串,然后在第一个%[^:]中存储字符串“some”,然后是“:”,然后在第二个%[^:]中存储init。然后它再等待一个“:”和不包含“:”的字符串。 最终接受这种格式的输入不会获取任何东西。
唯一重要的是如何将其打印到控制台。

重要的是,scanf()函数接受参数的指定方式。

例如: scanf(“%d%d”、&a和&b); 假设a和b是整数。
在命令行中,您必须输入a,然后输入空格,然后输入b。因为您在两个“%d”之间指定了一个空格。如果给n个空格作为其他字符,则必须在这些字符之间输入,然后才能接受该值。 因此,在你的情况下: 您输入的字符串中不包含“:”。 如果您想输入其中包含“:”的字符串,请考虑此情况。 例如: “some:init”是字符串,然后在第一个%[^:]中存储字符串“some”,然后是“:”,然后在第二个%[^:]中存储init。然后它再等待一个“:”和不包含“:”的字符串。 最终接受这种格式的输入不会获取任何东西。
唯一重要的是如何将其打印到控制台。

重要的是,scanf()函数接受参数的指定方式。

例如: scanf(“%d%d”、&a和&b); 假设a和b是整数。
在命令行中,您必须输入a,然后输入空格,然后输入b。因为您在两个“%d”之间指定了一个空格。如果给n个空格作为其他字符,则必须在这些字符之间输入,然后才能接受该值。 因此,在你的情况下: 您输入的字符串中不包含“:”。 如果您想输入其中包含“:”的字符串,请考虑此情况。 例如: “some:init”是字符串,然后在第一个%[^:]中存储字符串“some”,然后是“:”,然后在第二个%[^:]中存储init。然后它再等待一个“:”和不包含“:”的字符串。 最终接受这种格式的输入不会获取任何东西。
唯一重要的是你如何将它打印到控制台上。

你是如何用谷歌搜索的?这是我在谷歌SCANF中得到的第一个结果,并且有了关于<代码> [^字符] < /C>的解释。我只是重新搜索它,另外4个链接被访问,我跳过了那个,因为它说C++。在@YuHao的评论中,这些
符号有时被称为
格式说明符
:-)唯一确定的C文档是tex