arduino,错误:类型'char [14]'和'char [5]'到二进制'operator +'的操作数无效

时间:2017-04-15 17:42:00

标签: arduino

我遇到一些代码问题。 已经阅读了大量的主题,但大多数都与自定义库有关。

我的代码与任何自定义库无关。 我希望你们中的一些人知道我做错了什么。 我只是想把两个字符串“合并”成一个新变量。

错误:

sketch_SS01:13: error: invalid operands of types 'char [14]' and 'char [5]' to binary 'operator+'
char apiPath = apiPage + pid;
                      ^
exit status 1
invalid operands of types 'char [14]' and 'char [5]' to binary 'operator+'

与此代码相关的错误:

// api details
char apiPage[] = "/api.php?pid=";
char pid[] = "8855";
char apiPath = apiPage + pid;

1 个答案:

答案 0 :(得分:2)

编译器说:你不能使用operator+来连接C字符串(即char[])。您需要使用库函数strcat或更安全的兄弟strncat

字符串x与字符串dest的串联是strcat (dest,x);但请查阅文档,并在处理char数组时特别注意缓冲区溢出的风险。

要编写您编写的示例,您可以执行

// api details
char apiPage[] = "/api.php?pid=";
char pid[] = "8855";
char apiPath[100] = ""; // make sure it' long enough and initialized to empty string 
strcat(apiPath, apiPage);
strcat(apiPath, pid);

或者您可以使用strcpystrncpy将字符串复制到目标字符串中的正确位置。

<强>增加:

(可能更好/更简单/更安全)替代方法是使用具有所有预期字符串功能的String类(如构造函数,添加,追加等):请参阅https://www.arduino.cc/en/Reference/StringObject