?
Angesichts der Leerzeichen würde ich ganz stumpf chars einlesen.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const char *test[] = {
"NODE / 5000506881.315141569998-708.93758905492546.939696295506",
"NODE / 5000507 875.7085 -709.828 543.9399",
"NODE / 5000508875.696021113641-710.03140979639541.451424039574",
"NODE / 5000509875.697204436492-711.94436679355541.817120829625",
"NODE / 5000510875.819979032197-711.56479395172 543.90863009065",
""
};
int main(void){
const char **t=test;
char id[9]={0};
char x[17]={0}, y[17]={0}, z[17]={0};
while(**t) {
if(sscanf(*t, "%*8c%8c%16c%16c%16c", id, x, y, z)==4)
printf("%d: (%.12f, %.12f, %.12f)\n", atoi(id), atof(x), atof(y), atof(z));
++t;
}
}