我有一个字符串char date[16] ;
我想,最后两个标志是零。我试过了:
date[14] = '0';
date[15] = '0';
date[16] = '\0';
但是0与' \ 0'相同。我怎样才能达到我的目的?
答案 0 :(得分:4)
'0'
与'\0'
相同。
字符'0'
的ascii值为48
。
'\0'
是转义值(由\
生成),并引用ascii值0
,即空字符。
因此,date[14] = '0'
将存储符号 0
,而date[14]='\0'
将存储值 0
(并将其标记为以null结尾的字符串的结尾。)
答案 1 :(得分:4)
将字符'0'
存储在字符数组中主要是按照您尝试的方式正确,但您说您有char date[16]
所以索引包括终止{{ 1}}从0到15,你不能给'\0'
分配任何东西。
取决于date[16]
的完整内容,应该是date
或
char date[17]
答案 2 :(得分:1)
如果数组没有完全打印,那么可能会有一些垃圾'\0'
你有没有初始化整个阵列?
#include <stdio.h>
int main ()
{
char date[] = { [0 ... 14] = '0', [15] = '\0' };
printf("%s\n", date);
return 0;
}
预期输出为000000000000000
。
答案 3 :(得分:0)
在'0'
中存储date[14] = '0';
字符将完全符合您的要求。