指针不打印char []数组

时间:2017-06-14 16:50:19

标签: debugging arduino

我正在编写一些代码来接受字符串,将其转换为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++;
  }
}

1 个答案:

答案 0 :(得分:2)

表达式*DatTimDatTim[0]相同,即它获取数组中的第一个字符,然后将其分配给指针b(某事物)编译器应该警告过你。

数组自然衰落到指向第一个元素的指针,即DatTim等于&DatTim[0]

简单的解决方案是简单地执行

const char *b = DatTim;