Arduino IDE中字符串与整数拼接为char数组的报错问题咨询
你的代码存在两个核心问题
- 第一,C语言没有提供
+运算符重载实现字符串拼接的能力,你写的"字符串" + j本质是对字符串字面量的首地址做指针偏移,不是你想要的「把int变量j拼到字符串后面」的效果,和其他支持字符串+拼接的高级语言(比如Java、Python、JavaScript)逻辑完全不同。 - 第二,C标准不支持直接换行编写单行字符串字面量,你没有加续行符就把字符串拆成多行写,编译器识别到第一行的双引号没有对应闭合的双引号,就会抛出「缺少终止引号字符」的报错。
正确实现方案
你可以用标准库函数snprintf实现格式化拼接,既可以自动拼接字符串和int变量,也可以避免缓冲区溢出问题,示例代码如下:
#include <stdio.h> int main() { int i = 1, j = 2; // 你的业务变量 // 定义足够大的char数组存储拼接后的内容,可根据实际需求调整大小 char TableRow[2048]; // 多个相邻的字符串字面量C编译器会自动拼接,无需额外运算符 snprintf(TableRow, sizeof(TableRow), "<div class = \"divTableRow\">" "<div class = \"divTableCell\">%d</div>" "<div class = \"divTableCell\" id=\"tm%db%d\">0</div>" "<div class = \"divTableCell\" id=\"sm%db%d\">0</div>" "</div>", j, i, j, i, j); // 此时TableRow数组里就是你需要的完整拼接后的字符串 return 0; }
注意:你原有代码里写的
< / div >标签中间加了多余空格,属于非法HTML标签格式,示例里已经修正为标准的</div>写法。
内容的提问来源于stack exchange,提问作者sharkyenergy
相关产品推荐
相关产品推荐

