我目前正在编写一个小程序,但在编译时始终出现此错误
错误:空字符常量
我意识到这是因为我正在尝试将有效的char替换为空白,c[i]=''
但是我无法找到另一种表示它的方法。
我目前正在编写一个小程序,但在编译时始终出现此错误
错误:空字符常量
我意识到这是因为我正在尝试将有效的char替换为空白,c[i]=''
但是我无法找到另一种表示它的方法。
char c[5] = "";
空字符串,但char c = '';
无效,如以下6个答案所述。
Answers:
您可以使用c[i]= '\0'
或简单地使用c[i] = (char) 0
。
空/空字符只是一个零值,但也可以表示为带有转义零的字符。
'\0'
是与无关的空字符NULL
; 空字符只是一个数字为0的字符。
null char
应该是nul char
单身l
。
您不能在字符中存储“无字符”-这没有意义。
作为替代方案,您可以存储一个对您有特殊含义的字符'\0'
-例如null char-并对其进行特殊处理。
""
因为字符串是一个零个或多个字符的序列,但是一个字符恰好是一个值-不为零且不大于零。
是的,c[i]=''
这不是有效的代码。我们在字符常量之间加上括号'
'
,例如c[i] = 'A';
char A
。但是你中间不要写任何字符''
。
空空间不过是假设是否要分配空间而做的事情:
c[i] = ' ';
// ^ space
如果要分配,nul char
请执行以下操作:
c[i] = '\0';
// ^ null symbol
示例:假设您有一个字符串,则为 c[]
一个字符串(以null\0
终止的char数组)。例如:
char c[10] = {'a', '2', 'c', '\0'};
然后用空格替换第二个字符:
c[1] = ' ';
并且如果您使用printf进行如下打印:
printf("\n c: %s", c);
那么输出将是:
c: a c
// ^ space printed
然后将第二个char替换为'\ 0':
c[1] = '\0';
那么输出将是:
c: a
因为string以结尾\0
。
要表示不存在该值的事实,您有两种选择:
1)如果整个char
范围有意义,并且您不能保留任何值,请使用char*
代替char
:
char** c = new char*[N];
c[0] = NULL; // no character
*c[1] = ' '; // ordinary character
*c[2] = 'a'; // ordinary character
*c[3] = '\0' // zero-code character
然后c[i] == NULL
,当字符不存在时您将拥有,否则将拥有*c[i]
普通字符。
2)如果不需要某些可表示的值,char
则保留一个值以指示该值不存在,例如'\0'
字符。
char* c = new char[N];
c[0] = '\0'; // no character
c[1] = ' '; // ordinary character
c[2] = 'a'; // ordinary character
然后c[i] == '\0'
,当字符不存在时,您将拥有,否则将具有普通字符。
有两种方法可以执行相同的指令,即,空字符串。第一种方法是在静态内存上分配一个空字符串:
char* my_variable = "";
或者,如果您想露骨:
char my_variable = '\0';
上面发布的方式仅适用于角色。而且,第二种方式:
#include <string.h>
char* my_variable = strdup("");
不要忘了在此代码中使用free(),因为strdup()在内部使用了malloc。
c[i]
为空格还是要像在按Backspace键时在编辑器中一样从数组中“消除”该字符(即,是否要使用字符c [i-1]和c [ i + 1]在手术后变得相邻)?