我想在字符数组中添加字符。我的代码是
char x[100];
int i;
void setup() {
Serial.begin(115200);
}
void loop() {
for ( i=0; i<11;i++)
{
x[i]=(char)i;
}
Serial.println(strlen(x));
for (i=0;i<11;i++)
{
Serial.print(x[i]);
}
delay(1000);
}
我期待数组为x [0] = 0,x [1] = 1,x [2] = 2 ...... x [10] = 10
但是当Serial.println(strlen(x));
返回0时,数组似乎是空的
并且Serial.print(x[i]);
什么都不打印。
如何将字符添加到数组???
答案 0 :(得分:2)
Oups,C字符串按照惯例是以空字节结尾的char数组。所有strxx
函数都遵循此约定。
由于数组的第一个字符是... 0,strlen
在索引0处找到终止空值并正确地表示字符串的长度为0.
此外,代码为0到10(假设为ASCII)的所有字符都是对不可打印的字符。
我认为你想要做的是
for ( i=0; i<11;i++)
{
x[i]= '0' + i; /* 0 to 9 and : */
}
x[11] = '\0'; /* terminate the array with a null to make it a C string */
答案 1 :(得分:0)
替换:x[i] = (char)i;
致:x[i]=(char) ( ((int) '0') + i );
并添加x[11] = '\0';