chiffi
03-01-2005, 19:19
Hi Leute!
Hoffe das Problem ist vlcht. interessanter zu lösen als meine vorrigen Fragen :p
Ich habe ein Programm geschrieben, das erstmal Variablen in eine Datei reinschreibt und dann wieder rausliest, weil ich diese Aktionen für ein Programm brauche. Der erste Teil funktioniert fehlerfrei, alles getestet, bis zu file.seekg(sizeof(char[7]),ios::beg); , ab da bin ich mir nicht sicher was richtig ist. Kompilieren funktioniert fehlerfrei mit g++-3.3. Wenn ich die Datei jedoch ausführe, kommt ein Speicherzugriffsfehler. Ein Kumpel von mir hatte auch einen Speicherzugriffsfehler als er in einem SDL-Programm Funktionen in falscher Reihenfolge aufgerufen hat, vlcht. hilft das ja, ich bin ratlos. :confused:
./test
File successfully opened
Bitte geben Sie das Jahr (bis 2038) des Ereignisses an: 2005
Bitte geben Sie den Monat an: 12
Speicherzugriffsfehler
playa@debian:~/programmieren/fstream$
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main()
{
float fvar;
int year;
int month;
fstream file("name.txt",ios::in | ios::out | ios::trunc);
if (file.is_open()) {
cout << "File successfully opened\n"; }
else cout << "File is not opened succesfully \n";
cout << "Bitte geben Sie das Jahr (bis 2038) des Ereignisses an: "; /*weiter kann die Countdownroutine nicht*/
cin >> year;
if (year < 2039 || year >2004) //zwischen 2005-2038 "year =2005" z.b.
file << "year =" << year << endl;
else {
cout << "\nBitte neu starten.. \n"; //wenn nicht richtige Eingabe dann Ende
return 0;
}
cout << "\nBitte geben Sie den Monat an: "; //Monat eingeben und reinschreiben "month =08" z.b.
cin >> month;
if (month < 13 || month > 0) {
file << "month =" ;
if (month <10)
file << 0;
file << month;
}
else {
cout << "Bitte neu starten.. \n";
return 0;
}
/* YEAH hier kommt filelesen */
file.seekg(sizeof(char[7]),ios::beg); //gehe auf jahreszahl
char *ch;
file >> ch;
fvar = strtof (ch,NULL);
cout << "fvar: " << fvar << endl;
file.close();
return 0;
}
Hoffe das Problem ist vlcht. interessanter zu lösen als meine vorrigen Fragen :p
Ich habe ein Programm geschrieben, das erstmal Variablen in eine Datei reinschreibt und dann wieder rausliest, weil ich diese Aktionen für ein Programm brauche. Der erste Teil funktioniert fehlerfrei, alles getestet, bis zu file.seekg(sizeof(char[7]),ios::beg); , ab da bin ich mir nicht sicher was richtig ist. Kompilieren funktioniert fehlerfrei mit g++-3.3. Wenn ich die Datei jedoch ausführe, kommt ein Speicherzugriffsfehler. Ein Kumpel von mir hatte auch einen Speicherzugriffsfehler als er in einem SDL-Programm Funktionen in falscher Reihenfolge aufgerufen hat, vlcht. hilft das ja, ich bin ratlos. :confused:
./test
File successfully opened
Bitte geben Sie das Jahr (bis 2038) des Ereignisses an: 2005
Bitte geben Sie den Monat an: 12
Speicherzugriffsfehler
playa@debian:~/programmieren/fstream$
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main()
{
float fvar;
int year;
int month;
fstream file("name.txt",ios::in | ios::out | ios::trunc);
if (file.is_open()) {
cout << "File successfully opened\n"; }
else cout << "File is not opened succesfully \n";
cout << "Bitte geben Sie das Jahr (bis 2038) des Ereignisses an: "; /*weiter kann die Countdownroutine nicht*/
cin >> year;
if (year < 2039 || year >2004) //zwischen 2005-2038 "year =2005" z.b.
file << "year =" << year << endl;
else {
cout << "\nBitte neu starten.. \n"; //wenn nicht richtige Eingabe dann Ende
return 0;
}
cout << "\nBitte geben Sie den Monat an: "; //Monat eingeben und reinschreiben "month =08" z.b.
cin >> month;
if (month < 13 || month > 0) {
file << "month =" ;
if (month <10)
file << 0;
file << month;
}
else {
cout << "Bitte neu starten.. \n";
return 0;
}
/* YEAH hier kommt filelesen */
file.seekg(sizeof(char[7]),ios::beg); //gehe auf jahreszahl
char *ch;
file >> ch;
fvar = strtof (ch,NULL);
cout << "fvar: " << fvar << endl;
file.close();
return 0;
}