我们有一个像 - printf(“Hello World”); printf在给定字符串中的'd'之后追加空字符吗?是否printf终止每个字符串与空字符?
-1
A
回答
0
当一个字符串被定义为例如“hello world”默认为空终止。 printf没有做任何与null终止相关的工作,期望它自己的打印处理。它只接受char *作为输入。在你的例子中,“Hello World”是临时字符串,在传递给printf之前已经终止了null。如果传递的字符串不是空的,那么行为是未定义的。
3
当你写
printf("xyz");
你实际上是通过由三个字符的字符串和空终止于printf
。
printf("xyz");
// is equivalent to
static const char xyz[] = { 'x', 'y', 'z', 0 };
printf(xyz);
这两个printf
都具有相同的效果:它们将字符x,y和z写入控制台。空终止符不被写入。
1
试试这个:
#include <stdio.h>
int main()
{
char string0[] = {'a', 'b', 'c'};
char string1[] = {'a', 'b', 'c','\0'};
printf("%s", string0);
puts("");
printf("%s", string1);
return 0;
}
如果你足够幸运的话,你会看到类似这样的:
abc$#r4%&^3
abc
printf()
一个'\0'
不追加到字符串。它不会更改要输出的字符串,因为它的任务是“打印”而不是“修改”。 相反,空字符告诉printf()
字符串的末尾在哪里。
相关问题
- 1. SQL字符串空终止?
- 2. 空终止字符串
- 3. C字符串空终止
- 4. 如何使用printf打印非空终止的字符串?
- 5. 将一个以空字符结尾的字符串与一个非空终止的字符串进行比较
- 6. 终止字符串
- 7. 字符串和字符与printf的
- 8. 尽管字符串有空终止字符,std :: string的长度是否一致?
- 9. C:字符串Concatenation:空终止字符串
- 10. 如何知道字符串是否为空终止
- 11. Re2是否使用字符串大小或空终止?
- 12. C字符串的空终止
- 13. wcscat_s字符串不为空终止
- 14. JavaScript WebSocket非空终止的字符串
- 15. 双空终止的字符串
- 16. C:Eclipse/gdb和空终止字符串
- 17. Android JSON字符未终止字符串
- 18. Org.json.JSONException:字符未终止字符串
- 19. HTMLInputHidden空终止字符
- 20. 终止unicode空字符
- 21. C字符串空终止字符\ 0修改
- 22. C字符串有随机尾随字符,空终止问题?
- 23. Applescript:检查一个字符串是否包含空字符串?
- 24. IOS:验证一个字符串是否为空字符串
- 25. C# - 从第一个空终止符开始修剪字符串
- 26. Byte'\ x09'终止字符串?
- 27. 终止C++字符串
- 28. 替代字符串终止
- 29. 范围终止字符串
- 30. Perl NULL终止字符串
不,在任何情况下'printf'都没有这样做。 – ameyCU