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:ifdate[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也支持它。