?
So, is zwar noch nicht ganz das was ich haben wollte, funktioniert aber.
Mein Programm liest beliebig lange textdateien ein und schreibt die Werte in ein Array, nachdem es Zeile für Zeile ausgelesen und den jeweiligen string in eine Float-Zahl umgewandelt hat. Das schöne bei der Funktion "atof" (wandelt Sting in Float) ist, daß sie Buchstaben usw. nach dem Zahlenwert ignoriert.
Die Zeilen in der Textdatei können nun wenigstens so aussehen:
5.345 (Wert A)
65875 (Wert
usw.
Sollte jemand noch eine Idee haben wie man es umgedreht machen kann, also:
Wert A = 5.345
Wert B = 65875
usw.
währe ich sehr dankbar.
Hier mein Quellcode:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
int i;
int linecount = 0;
char buffer[512];
double invalue[10];
if (argc != 2)
{
cerr << "\nFalsche Parameterzahl\n";
exit(1);
};
ifstream infile(argv[1], ios::in);
if(!infile)
{
cerr << "\nDatei konnnte nicht geladen werden.\n";
exit(2);
};
while(infile.getline(buffer,512) != NULL)
{
linecount++;
invalue[linecount] = atof(buffer);
};
for(i=1;i<linecount;i++)
{
cout << invalue[i] << endl;
};
return 0;
}
Beim Aufruf des Programms mus nun hinter dem Programmnamen die einzulesende Textdatei angegeben werden. Und schon sind alle Werte der Textdatei (ein Wert pro Zeile)
in dem Array "invalue" abgelegt.
ach ja, die Zeile:
ifstream infile(argv[1], ios::in);
müsste laut DATA BECKER Buch so heißen:
ifstream infile(argv[1], ios::in|ios::nocreate);
damit bei fehlen einer Eingabedatei keine Leerdatei angelegt wird.
Das gibt allerdings sowohl unter linux mit gnu als auch unter Visual C++ unter Windows eine Fehlermeldung.
Hat jemand ne Ahnung warum ???
Schöne Grüße,
revolutz