当我试图更多地理解一些函数的行为时,我拿了两个例子:
char str[]="Hello\0World"
Run Code Online (Sandbox Code Playgroud)
和
char str[100];
scanf("%s",str);// enter the same string "Hello\0world"
Run Code Online (Sandbox Code Playgroud)
这里的问题是,在我得到的第一个例子中Hello,在第二个例子中,我得到了Hello\0world
为什么是两个字符\和0interepreted作为字符串的第一个结束字符,而不是在第二个?
Aas*_*set 11
\0是一个转义序列,虽然它由源文件中的两个字符组成,但它被解释为字符串中的单个字符,即空字符.但是,这种特殊解释只发生在源文件中; 如果你\0在运行程序时输入,它会被解释为字面上的两个字符\和0.