Hallo,
ich bin blutiger Anfänger im Programmieren von C++. Für die Umsetzung einer txt Datei habe ich folgendes Programm geschrieben:
ich bin blutiger Anfänger im Programmieren von C++. Für die Umsetzung einer txt Datei habe ich folgendes Programm geschrieben:
Code:
/* filesize.c
* ermittelt mit Hilfe von fgetc()
* die Größe einer Datei
*/
#include <stdio.h> /* u.a. wg. fgetc() */
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char PktNr[15];
int x, y, z, m, n;
FILE *SampleFile,*OutputFile;
unsigned long iNoRecords=0;
/* Die symbolische Konstante FILENAME_MAX
* steht für die maximal zulässige Länge
* eines Dateinamens.
*/
char *pszTemp, szFileName[FILENAME_MAX];
OutputFile = fopen("c:\\aibel\\test.txt", "w");
if( argc == 1 )
{
/* Wenn kein Dateiname als Kommandozeilen-
* Argument übergeben wurde, einen solchen
* interaktiv ermitteln.
*/
printf("Inputfile for transformation: ");
fgets( szFileName, FILENAME_MAX, stdin);
if( (pszTemp = strchr(szFileName, '\n')) != NULL )
*pszTemp = '\0';
}
else
strncpy(szFileName, argv[1], FILENAME_MAX);
/* Datei für Lesen im Binärmodus öffnen */
SampleFile = fopen( szFileName, "rb");
if( SampleFile == NULL )
{
printf("Non or incorrect file name entered", szFileName);
exit(EXIT_FAILURE);
}
/* Binärdateien enthalten in der Regel viele
* EOF-Zeichen (z.B. unter DOS ASCII 26). Die
* Anweisung while( fgetc(SampleFile) != EOF )
* würde beim ersten solchen Zeichen abbrechen.
* Die Funktion feof() hingegen gibt verläßlich
* Auskunft über das tatsächliche Dateiende.
*/
while( fscanf( SampleFile, "%s,%f,%f,%f,%f,%f", PktNr, x, y, z, m, n) != EOF)
{
iNoRecords++;
/* Ausgabe erfolgt in die Datei csv.dat */
fprintf(OutputFile, "*r%s\n %f\n %f\n %f\n", PktNr, x, y, z);
}
printf("Number of transformed points: %d\n", iNoRecords);
fclose(SampleFile);
return 0;
}
[CODE]
Das Programm funktioniert - leider sieht die Ausgabedatei nicht wie gewünscht aus - ich verzweifle an der Definition der Variablen :(. Deshalb zur Veranschaulichung die Eingabedatei. Die Angaben sind durch Komma voneinander getrennt und beschreiben folgende Eigenschaften in einer Zeile: Punktnummer, X-Wert(Kommazahl),Y-Wert(Kommazahl),Z-Wert(Kommazahl),Anzahl,Häufigkeit(Kommazahl)
100,45.875,38.723,21.312,2,0
1000,17.225,33.859,33.736,4,0.83
1001A,49.212,38.844,27.823,2,0.5
Die Ausgabedatei soll folgendermaßen aussehen - die letzten beiden Werte (Anzahl und Häufigkeit fallen weg):
*r100
45.875
38.723
21.312
*r1000
17.225
33.859
33.736
...usw.
Wäre echt super, wenn ich von jemanden Hilfe bekomme bezüglich der Umsetzung meines Projektes. Vielen Dank euch im Voraus :)
Zuletzt bearbeitet: