我一直在寻找在C/C++中清空字符数组的方法。我想出了以下代码:
char testName[20];
for(int i = 0; i < sizeof(testName); ++i)
{
testName[i] = (char)0;
}
它已经运行了一段时间,但是当我尝试使用strlen
函数时,结果总是比输入的单词多两个字符。例如,我输入单词dog
,输出将是五个字符。为什么会这样?我的字符数组没有被清除吗?
以下是我的代码:
char testName[20];
void loop()
{
if(Serial.available())
{
Serial.println("Waiting for name...");
index = 0;
for(int i = 0; i < sizeof(testName); ++i)
{
testName[i] = (char)0;
}
while(Serial.available())
{
char character = Serial.read();
testName[index] = character;
index++;
}
Serial.print("Name received: ");
Serial.println(testName);
Serial.print("The sentence entered is ");
Serial.print(strlen(testName));
Serial.println(" long");
delay(1000);
}
delay(1000);
}
输出的截图:
文本输出:
Name received: dog
The sentence entered is 5 characters long
\r\n
吗? - Werner Henzememset
的文档。 - user4581301std::string
更适合使用。此外,你的语言不太友好。 - SergeyA