【发布时间】:2018-11-19 03:31:38
【问题描述】:
我已阅读this post。 但是当我尝试时:
printf("before null %c after null\n", 0); // (ASCII=0) != '\0' ??
而不是得到:
before null
我明白了:
before null after null
所以我的问题是: ASCII 值 0 真的等于 '\0' 吗?
【问题讨论】:
-
是的,但是 printf 正在逐段打印你的字符串,所以它不会在中间
\0结束。它打印"before null ",然后是%c,然后是" after null"。 -
是的,您可以随时评论自己的问题和/或自己的答案。甚至是对您自己问题的回答。
-
感谢您的回答。但是我试过
printf("before null \0 after null\n");,输出是:before null这两者有什么区别? -
@iamsuperwen 是 printf 评估“%c”并决定如何处理相应的值 (0)。 NUL 对于字符串是带外(类似于 SQL 占位符如何防止 SQL 注入)。与
printf("before null %c after null \0 after silly null in string\n", 0);比较。 -
同样,
printf("%cn", '\\')输出\n(两个字符),而不是换行符。
标签: c ascii null-character