【发布时间】:2019-06-22 17:17:07
【问题描述】:
根据我的知识和一些线程like this,如果你想在 C 中打印字符串,你必须这样做:
printf("%s some text", value);
并且将显示该值而不是%s。
我写了这段代码:
char password[] = "default";
printf("Enter name: \n");
scanf("%s", password);
printf("%s is your password", password); // All good - the print is as expected
但我注意到我可以在没有值部分的情况下做完全相同的事情,它仍然可以工作:
printf("%s is your password");
所以我的问题是为什么%s 占位符在我不给它的情况下得到一个值,它怎么知道给它什么值?
【问题讨论】:
-
在我看来只是一个编译器问题,似乎指向垃圾
-
如果格式说明符说格式字符串后面有一个参数,而没有这样的参数,则行为未定义。一种可能的结果可能是以您认为合理的方式行事。
-
运气好。由于您没有提供所需的参数,因此它会拾取碰巧存在的任何杂散值。在这种情况下,它可能会从上一次调用中获取
password参数。但你不能依赖这个。
标签: c