Hallo,
ich bin gerade dabei einen Parser fuer ein ASF-File zu schreiben.
Momentan liest er mir Zeile fuer Zeile mit sscanf aus. Das klappt eigentlich super. Allerdings sind einige Zeichen in meiner Bsp-Datei eingerueckt:
Bei meinem konkreten Bsp des ASF files wuerde es wohl auch so gehen:
Gibt es einen einfacheren Weg, die Leerzeichen zu ueberspringen? Das Problem ist, dass die Anzahl der Leerzeichen von file zu file variieren...
Danke.
ich bin gerade dabei einen Parser fuer ein ASF-File zu schreiben.
Momentan liest er mir Zeile fuer Zeile mit sscanf aus. Das klappt eigentlich super. Allerdings sind einige Zeichen in meiner Bsp-Datei eingerueckt:
Code:
#
# Comment line
##
#
:version 1.10
:name BioSkeleton
:units
mass 1.0 #vor mass, length, angle sind urspruenglich 3 leerzeichen, die man hier nicht sieht
length 1.0
angle deg
:documentation
Example of an Acclaim skeleton
To be used with "Walk.amc"
:root
axis XYZ
order TX TY TZ RZ RY RX
position 0.0 0.0 0.0
orientation 0.0 0.0 0.0
Meine bisherige Loesung sieht so aus:
void FileIO::ReadLine(FILE* f, char* string)
{
do { fgets(string, 255, f); }
while ((string[0] == '#') || (string[0] == '\n') || feof(f));
return;
}
int FileIO:: getASF()
{//...
//mass
string sline;
string smass;
ReadLine(fileptr, line);
while(line[i] == ' ')
{
i++;
}
sline += line;
smass = sline.substr(i+5,3);
const char* cmass = smass.c_str();
mass = atof(cmass);
printf("%f\n", mass);
}
Bei meinem konkreten Bsp des ASF files wuerde es wohl auch so gehen:
Code:
ReadLine(fileptr, line);
sscanf(line," mass %f ",&mass); //indem ich ihm sage, dass dort vorher 3 leerzeichen stehen
printf("length: %f\n",mass);
Gibt es einen einfacheren Weg, die Leerzeichen zu ueberspringen? Das Problem ist, dass die Anzahl der Leerzeichen von file zu file variieren...
Danke.