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:
    -858540460

    oder 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 asdf

    Benutzer 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 ^^


Anmelden zum Antworten