5

我正在尝试打开一个将名称计算为字符串的文件。但是,它只是给我编译错误,如图所示。

for(int i=1;;i++)
{
   String temp = "data";
   temp.concat(i);
   temp.concat(".csv");
   if(!SD.exists(temp))//no matching function for call to sdclass::exists(String&)
   {
      datur = SD.open(temp,FILE_WRITE);
   }
}

我是一个 java 人,所以我不明白为什么这不起作用。我尝试了一些字符串对象方法,但似乎都没有奏效。我对 arduino 编程有点陌生,但我对 java 的理解要好得多。这个 for 循环的重点是每次 arduino 重新启动时创建一个新文件。

4

1 回答 1

12

SD.open需要一个字符数组而不是 a String,您需要先使用该toCharArray方法对其进行转换。尝试

  char filename[temp.length()+1];
  temp.toCharArray(filename, sizeof(filename));
  if(!SD.exists(filename)) { 
   ...
  }

完成代码:

for(int i=1;;i++)
{
   String temp = "data";
   temp.concat(i);
   temp.concat(".csv");
   char filename[temp.length()+1];
   temp.toCharArray(filename, sizeof(filename));
   if(!SD.exists(filename))
   {
      datur = SD.open(filename,FILE_WRITE);
      break;
   }
}

您会发现许多函数采用 char 数组而不是字符串。

于 2013-01-22T20:59:58.883 回答