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

时间:2014-11-26 06:17:30

标签: c scanf

我在一些代码中发现了这个并且无法理解它的作用:

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

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

2 个答案:

答案 0 :(得分:2)

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

Adam:And:Apple

答案 1 :(得分:1)

您应该记住的重要事项是,scanf()函数接受如何指定它的参数。

例如:

scanf(“%d%d”,& a,& b); 假设a和b是整数。

在命令行中你必须输入一个然后输入空格然后b。因为你在两个“%d's”之间给了一个空格。如果你给n个空格是其他字符,那么你必须在接受该值之前输入这些字符。

因此在你的情况下:

你输入不包含“:”的字符串。

如果您想在其中输入包含“:”的字符串,请考虑这种情况。

例如:

“some:init”是字符串然后,在第一个%[^:]中存储字符串“some”,然后是“:”然后在第二个%[^:]中存储init。然后它再等一个“:”然后再不包含“:”的字符串。

最终接受这种格式的输入不会取任何东西。

 唯一重要的是你如何将它打印到控制台上。