码:
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指针(char*
)。
而是使用:
strncat(dateTime, incoming, 2);
注意
n
中的strncat
。这将从incoming
到dateTime
最多连接两个字符,并放置一个终止的空字符。扩展
您可以将其扩展为:
strncat(dateTime, incoming + n, l);
其中
n
是起始索引,即之前为零,而l
是要复制的最大长度。示例
因此,如果您要用索引3和4连接字符,请执行以下操作:
strncat(dateTime, incoming + 3, 2);