我在一些代码中发现了这个并且无法理解它的作用:
scanf("%[^:]:%[^:]:%[^:\n]", a, b, c);
C文档中没有提到[^:]:
格式字符串,我很困惑。
答案 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。然后它再等一个“:”然后再不包含“:”的字符串。
最终接受这种格式的输入不会取任何东西。
唯一重要的是你如何将它打印到控制台上。