Hallo zusammen
Ich habe es nun geschafft einen Konverter zu programmieren, der die Exponentialdarstellung in Dezimaldarstellung konvertiert. Der Konverter ist wie folgt aufgebaut:
#include
#include
#include
#include
#include
#define TEMP_FILE_NAME "STL_$tep$.STL"
void ParseString(char *pcString)
{
char caVar1[200];
char caVar5[200];
float fVar2;
float fVar3;
float fVar4;
{
char caVar1[200];
char caVar5[200];
float fVar2;
float fVar3;
float fVar4;
if(strstr(pcString,"endfacet"))
;
else if(strstr(pcString,"facet"))
{
// "facet normal 0 1 0" parsen
sscanf(pcString," %s %s %f %f %f\n",caVar1, caVar5, &fVar2, &fVar3, &fVar4);
sprintf(pcString," %s %s %f %f %f\n",caVar1, caVar5, fVar2, fVar3, fVar4);
}
if(strstr(pcString,"vertex"))
{
// "vertex 0 40 16" parsen
sscanf(pcString," %s %f %f %f\n",caVar1, &fVar2, &fVar3, &fVar4);
sprintf(pcString," %s %f %f %f\n",caVar1, fVar2, fVar3, fVar4);
}
}
;
else if(strstr(pcString,"facet"))
{
// "facet normal 0 1 0" parsen
sscanf(pcString," %s %s %f %f %f\n",caVar1, caVar5, &fVar2, &fVar3, &fVar4);
sprintf(pcString," %s %s %f %f %f\n",caVar1, caVar5, fVar2, fVar3, fVar4);
}
if(strstr(pcString,"vertex"))
{
// "vertex 0 40 16" parsen
sscanf(pcString," %s %f %f %f\n",caVar1, &fVar2, &fVar3, &fVar4);
sprintf(pcString," %s %f %f %f\n",caVar1, fVar2, fVar3, fVar4);
}
}
int main(int argc, char *argv[])
{
FILE *pFileRead; // Datei zum lesen
FILE *pFileWrite; // Datei zum schreiben
//char caOutputFileName[PATH_MAX+1];
{
FILE *pFileRead; // Datei zum lesen
FILE *pFileWrite; // Datei zum schreiben
//char caOutputFileName[PATH_MAX+1];
char caSTLBuffer[20000]; // Buffer mit eingelesenem String aus Datei (pFileRead)
char *pcRc;
if(argc<2)
{
// Fehler: kein Parameter angegeben
printf("Format: %s \n",argv[0]);
exit(0);
}
pFileRead = fopen(argv[1],"r");
if(pFileRead==NULL)
{
printf("Fehler bei öffnen von Datei \"%s\"\n",argv[1]);
exit(1);
}
char *pcRc;
if(argc<2)
{
// Fehler: kein Parameter angegeben
printf("Format: %s \n",argv[0]);
exit(0);
}
pFileRead = fopen(argv[1],"r");
if(pFileRead==NULL)
{
printf("Fehler bei öffnen von Datei \"%s\"\n",argv[1]);
exit(1);
}
pFileWrite = fopen(TEMP_FILE_NAME,"w");
if(pFileWrite==NULL)
{
printf("Fehler beim schreiben");
exit(2);
}
for(;;)
{
pcRc=fgets(caSTLBuffer,sizeof(caSTLBuffer),pFileRead);
if(pcRc==0)
break;
if(pFileWrite==NULL)
{
printf("Fehler beim schreiben");
exit(2);
}
for(;;)
{
pcRc=fgets(caSTLBuffer,sizeof(caSTLBuffer),pFileRead);
if(pcRc==0)
break;
ParseString(caSTLBuffer);
fprintf(pFileWrite,caSTLBuffer);
}
fclose(pFileRead);
fclose(pFileWrite);
if(remove(argv[1])==0)
{
if(rename(TEMP_FILE_NAME,argv[1])!=0)
{
printf("Datei nicht umbenannt\n");
return(3);
}
}
return(0);
}
Gruss
Jürg Binggeli
fprintf(pFileWrite,caSTLBuffer);
}
fclose(pFileRead);
fclose(pFileWrite);
if(remove(argv[1])==0)
{
if(rename(TEMP_FILE_NAME,argv[1])!=0)
{
printf("Datei nicht umbenannt\n");
return(3);
}
}
return(0);
}
Gruss
Jürg Binggeli
Keine Kommentare:
Kommentar veröffentlichen