atoi() und atof() kommen aus den Lib-C (bzw. aus dem Pendant für die AVRs:
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html).
C-Strings müssen Null-Terminiert sein, also der Wert "0" (nicht das Zeichen '0' markieren das Ende eines Strings. Im Prinzip ist ein C-String ja nur ein array of char.
Durch das Ersetzen der "," durch '\0' (also den Wert 0) "zerstückelst Du Deinen C-String (char-array) in einzelne Häppchen, die Du dann den Funktionen übergeben kannst. Aus
"12,34,01234,777.88" wird dann "12\034\001234\0777.88"
Der Zugriff erfolgt dann jeweils über einen Pointer auf das erste Zeichen des jeweiligen Teilstrings:
char buffer[19] = "12\034\001234\0777.88";
char* hour = &buffer[0];
char* minute = &buffer[3];
char* intvalue = &buffer[6];
char* floatvalue = &buffer[11];
Etwas komplizierter wird es, wenn die Kommas an unterschiedlichen Stellen auftauchen, also die Teilstrings unterschiedliche Längen haben können.
Ich weiss ja nicht, wie Du die Daten aus der Ethernetschnittstelle einliest, aber vielleicht kann man das ja schon beim Lesen parsen und in passende Variablen speichern.