#include<stdio.h>
#include<conio.h>
int main()
{
char arr[]="\0";
if(printf("%s",arr))
printf("not empty");
else
printf("empty");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里我认为\0将被视为数组中的 1 个字节并printf返回 1 个字节,因此不应打印空。但输出就是返回的empty意思。那么如何服用呢?printf0printf\0
char arr[]="\0";
Run Code Online (Sandbox Code Playgroud)
这里,char数组arr有两个元素,它们都是\0。当您使用:
printf("%s",arr)
Run Code Online (Sandbox Code Playgroud)
%s格式说明符指示printf查找字符串。并找到了它,但它在看到第一个(第一个字符)printf后停止打印。\0这就是为什么printf不打印任何内容,因为arr是一个空字符串。
,的返回值printf是它打印的字符数(不是字符串的字节数),在本例中,0因为它什么也不打印,这就是该if语句导致程序打印 的原因empty。