【发布时间】:2010-12-05 17:08:48
【问题描述】:
我有以下代码:
scanf(" %Xs %Ys", buf1, buf2);
其中 X 和 Y 应该是整数。问题是 X 和 Y 的值是编译时常量,即使我想将值硬编码到格式字符串中,我也做不到,因为我不知道这些值。在 printf 中,您可以发送一个宽度变量以及带有“%*s”的参数。 scanf 有什么类似的吗?
编辑:澄清一下,常量在 compile 时是已知的,但在 coding 时是已知的,而且我根本不知道。它们可能因平台或实现而异,并且在我完成后它们可能会发生变化。即使他们没有,我仍然不希望在格式字符串中重复缓冲区大小,准备好在我忘记保持同步时进行段错误。
【问题讨论】:
-
编译时常量在编译时是已知的,不是吗,所以这些值可以内置到字符串中?但是后来你说你不知道这些值,所以你不能对它们进行编码......这个问题似乎自相矛盾。
-
您可能知道,
scanf()中的“”表示“禁止对该值进行任何分配”。对于scanf(),printf()中没有任何类似于 '' 的内容。 Kernighan 和 Pike 按照 @sambowry 在“编程实践”中的建议进行操作。