【发布时间】:2018-02-09 16:05:22
【问题描述】:
我一直在寻找在 C/C++ 中清空 char 数组的方法。我想出了这个代码:
char testName[20];
for(int i = 0; i < sizeof(testName); ++i)
{
testName[i] = (char)0;
}
它已经工作了一段时间,但是当我尝试strlen时,结果总是比输入的单词多两个。例如,我输入单词dog,输出将是五个。为什么呢?我的 char 数组没有被清除吗?
这是我的代码:
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吗? -
最好的办法是根本不使用 char 数组。而是使用 std::string.
-
阅读
memset的文档。 -
@manni66 因为你的建议完全错误。
-
@manni66,没有。字符数组通常比
std::string更合适。另外,你的语言不好。