如何表示空char?

61 c

我正在编写一个小程序但是在编译时我一直收到这个错误

错误:空字符常量

我意识到这是因为我试图用空的空格替换有效的字符,c[i]=''但我无法找到另一种方式来表示它.

ard*_*ent 96

你可以使用c[i]= '\0'或简单地使用c[i] = (char) 0.

null/empty char只是一个零值,但也可以表示为带有转义零的字符.

  • 是的,没有"空炭".`'\ 0'`是*null char*,它与`NULL`无关; null char只是一个以0为数字代码的char. (9认同)
  • 没有空字符这样的东西。将空字符称为空字符是完全错误的。 (4认同)

occ*_*lus 24

你不能在角色中存储"无人物" - 这没有意义.

作为替代方案,您可以存储具有特殊含义的字符'\0'- 例如null char - 并特别对待它.

  • 我认为这是一个比被接受的更好的答案,它会混淆null char和empty char.作为类比,它就像是说你不能声明一个int并存储'无数字' - 你必须存储_some_值. (3认同)
  • 你可以有一个空字符串`""`因为一个字符串是零个或多个字符的序列,但一个字符串恰好是一个值 - 不是零而不是更多. (2认同)

Cla*_*diu 10

空格char将是' '.如果你正在寻找null那么'\0'.


Gri*_*han 8

是的,c[i]=''不是有效的代码.我们括号之间的字符常量' ',例如c[i] = 'A';char A.但你不要在其间写任何字符''.

空的空间只不过是假设你想分配空间然后做:

c[i] = ' ';
//      ^  space 
Run Code Online (Sandbox Code Playgroud)

如果想分配nul char那么做:

c[i] = '\0';
//       ^ null symbol 
Run Code Online (Sandbox Code Playgroud)

示例:如果您有一个字符串,假设 c[]一个字符串(nul \0终止了char数组).例如:

char c[10] = {'a', '2', 'c', '\0'};
Run Code Online (Sandbox Code Playgroud)

用空格替换第二个字符:

c[1] = ' ';
Run Code Online (Sandbox Code Playgroud)

如果您使用printf打印它,如下所示:

printf("\n c: %s", c);
Run Code Online (Sandbox Code Playgroud)

然后输出将是:

  c:  a  c
//      ^ space printed 
Run Code Online (Sandbox Code Playgroud)

然后用'\ 0'替换第二个字符:

c[1] = '\0';
Run Code Online (Sandbox Code Playgroud)

然后输出将是:

  c:  a
Run Code Online (Sandbox Code Playgroud)

因为字符串终止了\0.


ver*_*ose 5

没有“空字符”之类的东西''

如果需要空格字符,则可以将其表示为空格:c[i] = ' '或与ASCII八进制等效项:c[i] = '\040'。如果您需要一个NUL字符,则为c[i] = '\0'