#include #include #include #include int wandle_m1_daten(char *zeile1) { int aktuell=0,komma,zaehler=0; char zeile2[250],zeile3[250],merker[2][20]; zeile3[0]='\0'; do{ zaehler++; komma = strcspn(zeile1 + aktuell,","); strncpy(zeile2, zeile1 + aktuell, komma); zeile2[komma]='\0'; if(zaehler==1 || zaehler==4) { if(atof(zeile2)!=0) { if(zeile2[strlen(zeile2)-3]=='.') { if(zaehler==1) { strncpy(merker[0],zeile2,strlen(zeile2)-3); merker[0][strlen(zeile2)-3]='\0'; strncpy(merker[1],zeile2+strlen(zeile2)-2,strlen(zeile2)); sprintf(zeile2,"%02d:%02d",atoi(merker[0]),(int)(atof(merker[1])/100*60)); strcat(zeile3,zeile2); } else { sprintf(zeile2,"%14.2lf",atof(zeile2)); strcat(zeile3,zeile2); } } else return 11; //fehler, komma fehlt oder an falscher stelle } else { return 12; //fehler, kein doublewert } } else { if(atoi(zeile2)!=0) { if(strspn(zeile2,"0123456789\n")==strlen(zeile2)) { sprintf(zeile2,"%14d",atoi(zeile2)); strcat(zeile3,zeile2); } else return 21; //fehler, komma enthalten } else { return 22; //fehler, keine Zahl } } aktuell+=komma+1; }while(zeile1[aktuell-1]!='\0'); strcpy(zeile1,zeile3); return 0; } int wandle_m2_daten(char *zeile1) { int aktuell=0,komma,zaehler=0; char zeile2[6][250],zeile3[250]; zeile3[0]='\0'; do{ komma = strcspn(zeile1 + aktuell,"$"); strncpy(zeile2[zaehler], zeile1 + aktuell, komma); zeile2[zaehler][komma]='\0'; if(zaehler!=1) { if(zaehler==2) { sprintf(zeile2[zaehler],"%14d",atoi(zeile2[zaehler])-273); } else if(atoi(zeile2[zaehler])!=0) { if(zaehler==0) { sprintf(zeile2[zaehler],"%02d:%02d",(int)atof(zeile2[zaehler])/60,atoi(zeile2[zaehler]) % 60); } else sprintf(zeile2[zaehler],"%14d",atoi(zeile2[zaehler])); } else { return 1; //fehler kein integerwert } } aktuell+=komma+1; zaehler++; }while(zeile1[aktuell-1]!='\0'); strcat(zeile3,zeile2[0]); strcat(zeile3,zeile2[5]); strcat(zeile3,zeile2[3]); strcat(zeile3,zeile2[4]); strcat(zeile3,zeile2[2]); strcpy(zeile1,zeile3); return 0; } int main(void) { FILE *origfile, *copyfile; char zeile[250]; int titelzaehler=0; origfile = fopen("file01.txt", "r"); if (origfile==NULL) printf("Fehler beim Oeffnen des Originals\n"); else { copyfile = fopen("errors.txt", "w"); if (copyfile==NULL) printf("Fehler beim Oeffnen der Kopie\n"); else { while (!feof(origfile)) { zeile[0]='\0'; fgets (zeile, 250, origfile); /*----------------------------*/ if(titelzaehler % 20 == 0) printf("Zeit Umdrehungen Geschwindigkeit Verbrauch Temperatur\n"); if(wandle_m1_daten(zeile)==0) //wenn m1 format dann printf("%s\n",zeile); else if(wandle_m2_daten(zeile)==0) //wenn m2 format dann printf("%s\n",zeile); else if(strlen(zeile)!=0) fprintf(copyfile, "%s", zeile); /*----------------------------*/ titelzaehler++; } } fclose(origfile); if (fclose(copyfile)) printf("Fehler beim Schliessen der Kopie\n"); else printf("Kopie wurde erstellt.\n"); } return 0; }