根据我的知识和类似这样的线程,如果要在C中打印字符串,则必须执行以下操作:
printf("%s some text", value);
Run Code Online (Sandbox Code Playgroud)
并且将显示值而不是%s。
我写了这段代码:
char password[] = "default";
printf("Enter name: \n");
scanf("%s", password);
printf("%s is your password", password); // All good - the print is as expected
Run Code Online (Sandbox Code Playgroud)
但是我注意到,没有价值部分,我可以做完全相同的事情,它仍然可以工作:
printf("%s is your password");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,为什么%s占位符在没有我给它的情况下就获得了价值,它又如何知道赋予它的价值?
因此,我对以下解释感到好奇,如果我在printf部分使用%s,为什么我的代码会得到不同的结果。我知道工作的人应该使用%s代替%c。
#include <stdio.h>
int main() {
int i;
char str1[12] = "Hello world!";
printf("str1==%c\n", str1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试多次编译它,并且在两次之间得到一些不同的结果:str1 == ?、 str1 ==,str1 ==(此空白实际上是该站点无法显示的某些图标)