我目前正在编写一个小程序,但在编译时我一直收到此错误
错误:空字符常量
我意识到这是因为我正在尝试用空格c[i]=''
替换有效字符,但我无法找到另一种表示它的方法。
答案 0 :(得分:90)
您可以使用c[i]= '\0'
或仅使用c[i] = (char) 0
。
null / empty char只是一个零值,但也可以表示为带有转义零的字符。
答案 1 :(得分:21)
你不能在角色中存储“没有角色” - 这没有意义。
作为替代方案,您可以存储对您有特殊意义的字符 - 例如null char '\0'
- 并特别对待它。
答案 2 :(得分:10)
空格char将是' '
。如果您正在寻找'\0'
的空值。
答案 3 :(得分:8)
是的,c[i]=''
不是有效代码。我们在'
'
之间的括号字符常量,例如c[i] = 'A';
char A
。但你不在''
之间写任何字符。
空的空间只不过是假设你想要分配空间,那么就这样做:
c[i] = ' ';
// ^ space
如果想要分配nul char
,请执行:
c[i] = '\0';
// ^ null symbol
示例:如果您有一个字符串,假设c[]
字符串(nul \0
终止了char数组)。例如:
char c[10] = {'a', '2', 'c', '\0'};
你用空格替换第二个字符:
c[1] = ' ';
如果您使用printf打印它,如下所示:
printf("\n c: %s", c);
然后输出将是:
c: a c
// ^ space printed
你用'\ 0'替换第二个字符:
c[1] = '\0';
然后输出将是:
c: a
因为字符串以\0
终止。
答案 4 :(得分:5)
没有“空角色”''
这样的东西。
如果需要空格字符,可以表示为空格:c[i] = ' '
或其ASCII八进制等效项:c[i] = '\040'
。如果你需要一个c[i] = '\0'
的NUL字符。
答案 5 :(得分:4)
为了表示该值不存在的事实,您有两个选择:
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'
,否则将获得普通角色。
答案 6 :(得分:2)
在字符串中指定null可能很有用,而不是显式地将某个索引设为null char react-redux
。我已经将它用于测试处理字符串的函数,以确保它们保持在适当的范围内。
使用:
'\0'
这将创建一个大小为8的数组,其值为:
char test_src[] = "fuu\0foo";
答案 7 :(得分:2)
执行相同指令的方法有两种,即一个空字符串。第一种方法是在静态内存上分配一个空字符串:
char* my_variable = "";
或者,如果您想露骨:
char my_variable = '\0';
以上发布的方式仅适用于角色。 而且,第二种方式:
#include <string.h>
char* my_variable = strdup("");
不要忘了与此同时使用 free() ,因为 strdup()使用 malloc 。
答案 8 :(得分:0)
String before = EMPTY_SPACE+TAB+"word"+TAB+EMPTY_SPACE;
String after = before.replaceAll(" ", "").replace('\t', '\0');
表示在=“ word”
之后
答案 9 :(得分:0)
这是单引号和双引号含义不同的情况。
""
被编译器翻译成 (const char[1])""
。这让您可以在字符数组的初始化中使用它。
''
不是,而是一个未终止的空字符串。因为不终止就无法判断字符串是否为空,所以这不是有效代码。因此出现错误。
你几乎肯定想做
c[i] = '\0';
如果 c
确实是一个文本字符串,这会将字符串的长度设置为 i,方法是在该字符处终止它。
如果 c
实际上不是用作文本字符串,那仍然是您应该用来表示没有任何内容的值, 因为它是假的,并且任何其他字符都是真的。
如果你真的想在那里放一个空格,那么你想要
c[i] = ' ';