我正在编写一些代码来接受字符串,将其转换为char数组,然后打印回给用户(在传递给另一个函数之前)。
目前代码最多可达dat.toCharArray(DatTim,datsize);
但是,指针似乎没有工作,因为wile循环永远不会触发
String input = "Test String for Foo";
InputParse(input);
void InputParse (String dat)
//Write Data
datsize = dat.length()+1;
const char DatTim[datsize];
dat.toCharArray(DatTim,datsize);
//Debug print back
for(int i=0;i<datsize;i++)
{
Serial.write(DatTim[i]);
}
Serial.println();
//Debug pointer print back
const char *b;
b=*DatTim;
while (*b)
{
Serial.print(*b);
b++;
}
Foo(*DatTim);
我无法弄清楚上面的内容与template code provided by Majenko
之间的区别void PrintString(const char *str)
{
const char *p;
p = str;
while (*p)
{
Serial.print(*p);
p++;
}
}
答案 0 :(得分:2)
表达式*DatTim
与DatTim[0]
相同,即它获取数组中的第一个字符,然后将其分配给指针b
(某事物)编译器应该警告过你。
数组自然衰落到指向第一个元素的指针,即DatTim
等于&DatTim[0]
。
简单的解决方案是简单地执行
const char *b = DatTim;