1. Einlesen einer .txt ab 3.Zeile , 2. Automatismus fürs Einlesen vieler .txt gesucht
-
Hallo liebe Leute,
ich hoffe mal, ihr könnt mir zu meinen 2 Fragen weiterhelfen.
Vielen Dank schon mal im voraus von einem, der sich noch nicht wirklich mit C++ beschäftigt hat, aber es jetzt schnell können muss.
Also:1. Ich muss beim Einlesen einer txt-Datei auf 3 verschiede Werte in 3 Spalten zurückgreifen, was bei mir eigentlich klappt, jedoch nur, wenn ich keine Kopfzeilen habe. Was kann ich einfügen, damit erst ab der 3.Zeile gelesen wird?
2. In dem Programm werden 2 txt-Dateien bearbeitet. Allerdings darf ich demnächst mehrere hundert bzw. tausend bearbeiten, was eine Auflistung unmöglich macht. Ich bräuchte eine Funktion, die automatisch viele Dateien (die nach dem Muster "Sha" + Datums- und Uhrzeitangabe gespeichert sind) hintereinander liest und nebenbei auch noch erkennt welche Uhrzeiten existieren und welche nicht (im Beispiel unten 28.11.1991 8:01 und 8:06).
Hier mal die txt-file:
1381 lines
Azim. Range Inten
15.7 108.5 1.00
17.1 99.5 2.00
17.1 119.5 3.00
usw...................................
und das cpp:#include <stdio.h>
const int filenumb = 2;
float azimuth;
float range;
float intensity;void main()
{
FILE *fi,*fi1;
int ji,i,count;char * radinfile[filenumb] =
{"Sha199111280801.txt",
"Sha199111280806.txt"};char * radoutput[filenumb] =
{"199111280801.txt",
"199111280806.txt"};for (ji=0 ; ji<filenumb; ji++)
{ fi = fopen (radinfile[ji],"rb");
fi1 = fopen(radoutput[ji], "w");for (i=1 ; i<1381 ; i++) //1381 entsprechend der Zeilen in der .txt)
{ fscanf(fi,"%f %f %f",&azimuth,&range,&intensity);fprintf(fi1,"%f", azimuth);
fprintf(fi1, ",azimuth");
fprintf(fi1,"\n");fprintf(fi1,"%f", range);
fprintf(fi1, ",range");
fprintf(fi1,"\n");fprintf(fi1,"%f", intensity);
fprintf(fi1, ",PI");
fprintf(fi1,"\n");
}fclose(fi);
}
}Ich macht mich glücklich, wenn ihr mir helfen könnt.
Grüsse
Chris
-
Setz doch bitte Codetags, damit man den Code besser lesen kann.
Wie mir scheint, nutzt du sehr viele C-Funktionen(und keine aus dem C++ Standard), da bist du hier im falschen Forum.void main()ist übrigens falsch, richtig ist:
int main()Wenn du die dritte Zeile einlesen musst, könntest du mit getline (siehe dazu www.cppreference.com und die FAQ) zwei Zeilen einfach einlesen und verwerfen.
-
meiner meinung sind für solche sachen script sprachen wie perl/python besser geeignet als c++
wenn's denoch c++ sein muss wirst du für das automatisierte lesen vieler txt dateien in einem ordner(/unterordner?!) winapi brauchen, für ein schema lala-datum-uhrzeit würden sich regexp gut eignen, sind aber auch nicht zwingen erforderlich für regexp in c++ würde ich die boost lib verwenden (hab da aber selber noch nicht so viel erfahrung damit)ab 3. zeile einlesen?!
entweder so in der artfor(size_z i=0; i<3;++i) txtStream = txtStream.find("\n");oder 3 mal getline, wenn jede zeile 3 float werte hat könntest du natürlich die lesepostion des streams auch einfach 9 float's weiterschieben - dafür gibts viele methoden
mfg, stefan b