String zerlegen in Substrings

Hallo,

ich blicke es mal wieder nicht. Ich habe ein Array mit diesem Inhalt: "blahblahblah...Time: 21:19:21 11/10/2016 GMT+01" . Ich möchte es in 6 Integers aufteilen (int Std, Min, Sek, Tag, Mon, Jahr). Alle bis auf das Jahr 2-stellig, Jahr 4-stellig. Dies sollen dann an ein Timeelement übergeben werden.

Wie zerlege ich den String/das Arrray? Jetzt suche ich schon den ganzen Nachmittag rum und komme nicht weiter. ???

Gruß

such nach Time: und zerlege es mit strtok odereben von Hand, indem du den Zeiger erhöhst

Was ist ein Timeelement? Die C-Struktut time?

Ist "balabla... Time: " immer gleich lang?

Gruß Tommy

Hallo,

müsste aus einer TimeLib.h kommen.

tmElements_t tm; // timeobjekt festlegen . . . tm.Hour = Hour; // Uhr stellen tm.Minute = Min; tm.Second = Sec;

(RTC.write(tm)) . .

Ja, er müsste eigentlich immer gleich lang sein. Der buffer ist definiert (char buffer[BUFFER_SIZE];), die paar Zeichen liegen auch immer an der selben Stelle.

Wie funtioniert strtok - gibt es da Beispiele? Ich kann mir doch nicht jedes Element einzeln vornehmen.... Ich habe auch mal nach sscanf gesucht, da komme ich auch nicht weiter.

uk1408: Wie funtioniert strtok - gibt es da Beispiele? Ich kann mir doch nicht jedes Element einzeln vornehmen.... Ich habe auch mal nach sscanf gesucht, da komme ich auch nicht weiter.

Ein Beispiel:

char e[] = {"blahblahblah...Time: 21:19:21 11/10/2016 GMT+01"};

void setup() {
  Serial.begin(9600);
  Serial.println("Anfang");
  const char s[] = {"Time: "};
  char * string = strstr(e, s);
  string = string + sizeof(s) - 1;
  Serial.println(string);
  char *ptr;
  const char t[] = {":/ "};
  ptr = strtok(string, t);
  byte Std = atoi(ptr);
  ptr = strtok(NULL, t);
  byte Min = atoi(ptr);
  ptr = strtok(NULL, t);
  byte Sek = atoi(ptr);
  ptr = strtok(NULL, t);
  byte Mon = atoi(ptr);
  ptr = strtok(NULL, t);
  byte Tag = atoi(ptr);
  ptr = strtok(NULL, t);
  uint16_t Jahr = atoi(ptr);
  Serial.print(Std);
  Serial.print(" ");
  Serial.print(Min);
  Serial.print(" ");
  Serial.print(Sek);
  Serial.print("  ");
  Serial.print(Tag);
  Serial.print(" ");
  Serial.print(Mon);
  Serial.print(" ");
  Serial.print(Jahr);
  Serial.println();
}

void loop() {}

Guten Morgen,

agmue: DANKE..... funktioniert.

Jetzt muss ich es nur noch verstehen :confused:

Gruß Uwe

uk1408: Jetzt muss ich es nur noch verstehen :confused:

Ich habe bei C von A bis Z von Jürgen Wolf nachgeschaut.