根据C ++ char数组规则,它以\ 0 null字符结尾。如果我想在C ++ char数组中保存并打印\0
怎么做
#include <iostream>
using namespace std;
int main()
{
char name[] = {'H', 'o', 'n', 'd', 'a', '\0'};
cout << name; // how to print Honda\0
return 0;
}
答案 0 :(得分:5)
转义字符必须转义
#include <iostream>
using namespace std;
int main()
{
char name[] = {'H', 'o', 'n', 'd', 'a', '\\', '0', '\0'};
// ^^^^^^^^^^
cout << name; // prints Honda\0
return 0;
}
答案 1 :(得分:3)
您需要存储'\\'
和'0'
以及最后的'\0'
来终止它。 '\\'
有两个反斜杠,因为其中一个是转义字符。
答案 2 :(得分:2)
根据C ++ char数组规则,它以\ 0 null字符结束。
没有规则说char 数组通常以空字符结尾。但是,字符 strings 必须以此结束,并且传递给流的字符数组必须是字符串。
如果我想在C ++ char数组中保存并打印\ 0怎么做
您不能将其作为字符串的一部分。
但是,您可以单独打印它作为独立字符:
char nul = '\0'
std::cout << nul;
但是,如果您希望在终端中看到某些内容,那么您可能会感到失望,因为\0
是不可打印的字符。如果将程序输出传递给hexdump
或类似工具,则可以看到空字符(即零值)是程序输出的一部分。
如果您的目标是打印字符\
和0
,只需将这些字符作为字符串的一部分(如其他答案中所示,但为了完整性,我会将其包含在此处) 。请记住,必须转义转义字符。
char name[] = {'H', 'o', 'n', 'd', 'a', '\\', '0' '\0'};
答案 3 :(得分:0)
如果您的意思是{C}字符串末尾的单个终止字符'\0'
,则不必像其他答案所解释的那样明确地存储它。请注意,在终止'\'
单字符之前存储额外的'0'
和'\0'
可打印字符与打印/存储终止'\0'
不同。
您无法使用'\0'
打印C字符串的终止[f]printf( "%s", ... );
值C Standard, 7.21.6.1 fprintf
函数< /强>
如果不存在
l
长度修饰符,则参数应为指针 到字符类型数组的初始元素。 数组中的字符被写入(但不包括)终止空字符。如果精度 指定,不超过写入的多个字节。如果 精度未指定或大于。的大小 数组,数组应包含一个空字符。
您无法打印实际的'\0'
字符本身,因为它不打印,但您可以打印字符串来表示它:
void printStrAndTerm( FILE *fp, const unsigned char *str )
{
do
{
if ( *str )
{
fputc( *str, fp );
}
else
{
fputs( "\\0", fp );
}
str++;
}
while ( *str );
}