array gibt falschen wert aus
-
hi nochmal, meine klassE:
class save_to //Mit dieser Klasse kann man Variabel während der Laufzeit einfach und bequem Daten in .ini Dateien saven { private: FILE* data_list; int list[1000]; char *data_input; int array_field_number; int array_value; int array_save[1000]; public: virtual ~ save_to() { delete [] data_input;} //Gebe speicher für data_input wieder frei void init_array_save() //Beim Programmstart ausführen, nur einmal!!! (Sonst können Logik-Speicherfehler auftreten) { array_field_number = 1; } int save_to_file() { data_input = new char[100]; //Speicher für data_input wird angeschafft cin>>data_input; data_list = fopen("list.ini","a+"); fprintf(data_list,"\n%s", data_input); fclose(data_list); return 0; }; void set_array() //Setzt einen Wert oben auf den Array { cin >> array_value; array_save[array_field_number] = array_value; array_field_number ++; if(array_field_number >= 1000) { cout<<"Speicher ist voll!\n"; array_field_number --; } }; void give_array() //Gibt array wert des feldes "array_field_number" aus { cout <<array_save[array_field_number]; }; };So und nun der Code in dem ich die Klasse immer teste:
#include "stdafx.h" #include <iostream> #include <stdio.h> #include "classes.cpp" using namespace std; int main() { save_to save; cout<<"Mal sehen was heute auf dem Plan steht...\n"; cout<<"Ahhh... save_to klasse... naja dann fangen wir mal an:\n"; cout<<"Input eingeben:"; save.save_to_file(); save.save_to_file(); save.init_array_save(); save.set_array(); save.give_array(); return 0; }Alles lässt sich fehlerfrei kompilieren, jedoch gibt save.give_array() (die funktion soll den wert von array_save[array_field_number] ausgeben) einen falcshen wert aus...
angenommen der benutzer gibt "60"ein
dann gibt das programm am ende:
-858540460oder so aus.
Wo liegt mein Fehler?
-
Hi,
set_array() setzt array_save[1]; give_array() liefert array_save[2].
Jockel
-
Und außerdem rufst du save_to_file() doppelt auf - ist das Absicht?
-
@cstoll ja, die funktion speichert nen eingegebenen Wert in einer Datei... ich wollte schauen, ob bei einer zweiten Eingabe die Textphrase gleich in die nächste Zeile geschoben wird und nicht einfach nur angehängt...
Beispiel:
Benutzer gibt ein asdfBenutzer gibt zweites mal ein: jklö
Ich will das in der Datei steht:
asdf
jklöanstatt:
asdfjklö(und es funktioniert also müsst ihr mir ausnahmsweise mal nicht helfen
)
-
Daß das funktioniert, kann ich mir noch vorstellen, aber es ist sehr unsauber (du reservierst bei jedem Aufruf etwas Speicher und löschst im Destruktor nur den zuletzt angeforderten Speicherblock).
-
Geht es dir letztendlich darum, ini's zu schreiben?
Also zum Beispiel:
*
[video]
width=800
height=600
fullscreen=1[user]
player1=Frank
*Wieso nimmst du dann nicht die WinApi ?
-
weil ich mich mit winapi nicht auskenne ^^