简短的:从字符到常量字符*的转换无效
Short one: invalid conversion from char to const char*
code:
void setup(){
Serial.begin(19200);
static char value [20] = "20:17:12";
setSimTime(value);
}
void setSimTime(char* incoming){
char dateTime[20];
strcat(dateTime, "20");
strcat(dateTime, incoming[0-1]);
Serial.println(dateTime);
}
正确的方法是什么?感谢任何帮助
使用 strcat(dateTime, incoming[0-1]);
,其中incoming[0-1]
与incoming[-1]
相同,导致未定义的行为。实际上incoming[-1]
是位于数组索引-1
处的单个字符,这是错误的原因,编译器无法将单个字符(char
(转换为字符指针(char*
(。
而是使用:
strncat(dateTime, incoming, 2);
请注意 strncat
中的n
。这将从 incoming
到 dateTime
最多连接两个字符,并放置一个终止的空字符。
外延
您可以将其扩展到:
strncat(dateTime, incoming + n, l);
其中n
是起始索引,即之前的零,l
是要复制的最大长度。
例
因此,如果您如何连接带有索引 3 和 4 的字符,请执行以下操作:
strncat(dateTime, incoming + 3, 2);
确切的错误消息来自以下事实:incoming[0-1]
的类型为 char
,但strcat
期望将const char*
作为第二个参数,即指向char
的指针。
额外的const
在这里不是问题,因为非常量值始终可以转换为常量值。
请参阅有关incoming[0-1]
无效的其他答案/评论。
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何使用C++将字符串中的字符转换为整数变量
- 字符转换功能 std::isupper() & std::islower() C++17
- 将字符 * 转换为字符串 *
- 在编译时将常量字符* 转换为常量 char_type*
- 如何在 C/C++ 中将无符号字符*转换为无符号字符数组?
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 无法使用字符串流将字符转换为字符串C++
- 将无符号字符 C++ 转换为 C#
- C++:使用没有位移位的指针将无符号字符转换为无符号 int
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法<string>从"常量字符 []"转换为<类名>
- 不能将字符转换为整数吗?
- 编译时将字符*转换为字节
- CP1251:从字符* 转换为 wchar_t* 时的编码失真
- 将单个字符转换为 std::string 前缀 \x01
- PPM 将字符转换为 int 授予负数
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类
- 将常量字符* 转换为字符时出错