C 如何在字符串中存储零

C 如何在字符串中存储零,c,string,C,String,我有一个字符串chardate[16] 我想,最后两个符号是零。我试过: date[14] = '0'; date[15] = '0'; date[16] = '\0'; 但0与“\0”相同。如何达到我想要的?将'0'字符存储在日期[14]=“0”中将完全满足您的要求。'0'与'\0'不同 字符'0'的ascii值为48 '\0'是一个转义值(通过\)并引用ascii值0,它是空字符 因此,date[14]='0'将存储符号0,而date[14]='\0'将存储值0(并将其标记为以nu

我有一个字符串
chardate[16]
我想,最后两个符号是零。我试过:

 date[14] = '0';
 date[15] = '0';

 date[16] = '\0';

但0与“\0”相同。如何达到我想要的?

'0'
字符存储在
日期[14]=“0”中
将完全满足您的要求。

'0'
'\0'
不同

字符
'0'
的ascii值为
48

'\0'
是一个转义值(通过
\
)并引用ascii值
0
,它是空字符


因此,
date[14]='0'
将存储符号
0
,而
date[14]='\0'
将存储值
0
(并将其标记为以null结尾的字符串的结尾)。

如果数组未完全打印,则其中可能有一些垃圾
'\0'

你初始化了整个数组了吗

#include <stdio.h>

int main ()
{
    char date[] = { [0 ... 14] = '0', [15] = '\0' };

    printf("%s\n", date);
    return 0;
}
#包括
int main()
{
字符日期[]={[0…14]='0',[15]='\0'};
printf(“%s\n”,日期);
返回0;
}

输出如预期的那样是
000000000000000

将字符
'0'
存储在字符数组中基本上与您尝试的方式是正确的,但是您说您有
字符日期[16]
,因此包括终止的
'\0'
的索引从0变为15,您不能将任何内容分配给日期[16]

根据
date
的完整内容,它应该是
char date[17]

date[13] = '0';
date[14] = '0';

date[15] = '\0';

是否要存储“0”字符或0值?然后代码正在运行。。。存储“0”将在数组中存储字符“0”,而“\0”是结束符,但字符串在0之前被截断。警告:
date[16]
不是具有16个字符空间的数组的一部分。
字符日期[16]的最后一个元素是日期[15]
(第一个元素是日期[0])。这些字符不是“符号”,而是数字号。绳子被剪断了。它只打印13个符号。你能把全部代码都贴出来吗。。。?看起来应该问另一个问题,如果投票被否决,你能解释一下原因吗?本页中的另一个答案与我的答案完全相同……我认为是问题作者否决了那些不能解决问题的问题。不幸的是,我怀疑他提出了错误的问题。@OliverMatthews-我同意-这看起来像是这样,不管怎样,我只是想了解背景…字符串被切断了。它只打印13个符号。C数组是零索引的。仅获取13个符号意味着
date[12]
为空。@OliverMatthews:if
date[12]
'\0'
printf(“%s”,date)
最多可打印(包括)12个字符。为了完整性起见:“null”字符的官方名称是
NUL
(带有一个
L
)。是的,但我认为在这种情况下它会(如果有)引起混淆。这不是标准C,所以我不推荐它。更好的解决方案是
char-date[16]={'\0'};memset(日期为'0',sizeof(日期)-1)
。您发布的代码是用什么c语言编写的?在ISO C99中,您可以按任意顺序给出元素,指定它们所应用的数组索引或结构字段名,GNU c也允许将其作为C90模式的扩展。将一系列元素初始化为相同的值是GNU扩展,但clang也支持它。