c - 如何将 '\0' 存储在 char 数组中

标签 c string printf

是否可以将 char '\0' 存储在一个 char 数组中,然后再存储不同的字符?例如

char* tmp = "My\0name\0is\0\0";

有人教我在 C 中实际上称为字符串列表,但是当我尝试打印上面的内容时(使用 printf("%s\n", tmp)),它只打印了

"My".

最佳答案

是的,这肯定是可能的,但是,此外,您不能将该数组用作 string 并获取存储在 '\0' 之后的内容。

根据定义,一个字符串是一个char数组,空字符'\0'结束>。所有与字符串相关的函数都将在终止空字节处停止(例如,一个参数,在实际内容之间包含一个'\0',传递给格式说明符%sprintf() 中)。

引用 C11,章节 §7.1.1,术语定义

A string is a contiguous sequence of characters terminated by and including the first null character. [...]

但是,对于逐字节处理,只要您留在分配的内存区域内就可以了。

关于c - 如何将 '\0' 存储在 char 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535879/

相关文章:

使用 atoi 时无法将 char 转换为 int

c - 段错误 11 - C

c++ - 访问冲突写入位置 0xcccccccc 使用字符串

c++ - 用空格拆分字符串但只得到第一个字

c - 最佳拟合矩形算法

php - 如何理解3行c代码?

java - 返回数字的最后 5 位数字

c - 直接参数访问被忽略

c - C中单引号和双引号的区别

c++ - C++ 中的 cout 与 printf 给出不同的输出