码:

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。这将从incomingdateTime最多连接两个字符,并放置一个终止的空字符。

扩展

您可以将其扩展为:
strncat(dateTime, incoming + n, l);

其中n是起始索引,即之前为零,而l是要复制的最大长度。

示例

因此,如果您要用索引3和4连接字符,请执行以下操作:
strncat(dateTime, incoming + 3, 2);

09-25 16:29