Konvertierung int --> char funktioniert nicht



  • Hallo, ich möchte gerne ein Array mit Zahlen füllen, dieses Array jedoch im nachhinein als Char verwenden. Irgendwie klappt da etwas bei der Konvertierung nicht.

    Hier einmal der Ausschnitt, wo ich den Fehler vermute:

    Globale Deklaration:

    int const MAX=100;
    char tueren[MAX];
    char tuerNummer[MAX];
    char zustandSignierung[MAX];
    char tuerenUndZustand[MAX*2];
    

    Und hier der Code der Funkion:

    void feld_TuerNummer_setzen()
    {
    	ofstream fout("jaja.txt");
    	char* hilfe=NULL;
    	hilfe=new char;
    	for (int i=1;i<MAX ;i++ )
    	{
    		*hilfe=(char)i;
    		fout<<*hilfe;
    		tuerNummer[i-1]=*hilfe;
    	}
    	delete hilfe;
    }
    

    Und in meine .txt-Datei wurde folgendes für die werte von hilfe geschrieben:

    

     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abc

    Wäre cool, wenn mir da jemand helfen könnte!
    Danke schonmal im voraus!



  • FAQ

    //edit ok, wenn ich mir deinen code so anschaue glaub ich nicht, dass dir die Faq in irgendeiner weise helfen kann. Da gibts fundamentale probleme

    //edit2
    Ich glaub, du hast irgendwo erhebliche verständnisprobleme. Darum schauen wir uns deinen Code nochmal an.

    vorlektüre

    void feld_TuerNummer_setzen()
    {
        ofstream fout("jaja.txt");//ok
    
        //was machst du hier? im moment legst du speicher für ein einzelnes Zeichen
        //an. sieht schonmal nicht sehr gewollt aus. in einem char speicherst du
        //nur ein einzelnes Zeichen, zb eine '1'.Ich vermute, dass du eher einen
        //string haben willst, also eine Zeichenkette, zb "123".
        char* hilfe=NULL;
        hilfe=new char;
        for (int i=1;i<MAX ;i++ )
        {
            //hier setzt dann die FAQ an. du musst den integer umwandeln. Ein int
            //ist im Speicher nur ein Wert. ein lesbares ASCII zeichen(siehe link oben) 
            //ist nur die interpretation eines wertes. das Zeichen '1' entspricht 
            //dem Integer Wert 49
            //darum kann das hier nicht funktionieren, da du nur die interpretation
            //des int wertes änderst.
            *hilfe=(char)i;
            fout<<*hilfe;
            tuerNummer[i-1]=*hilfe;
        }
        delete hilfe;
    }
    


  • Das war eigentlich auch so gewollt dass ich nur ein zeichen speichern kann, da ich dieses Zeichen dann später in das Array schreiben wollte, die variable hilfe hab ich hier nur verwendet um kurzzeitig den wert i anzunehmen, das war ein versuch, Jetzt wo du das aber geschrieben hast, fällt mir auch auf, dass ich nicht nur ein char nehmen kann, da der wert für i>9 ja mehr als nur ein zeichen nimmt, somit wäre sogar mein Array tuerNummer[MAX] mit MAX=100 zu klein... Naja dann sollte ich das komplette Problem anders lösen,
    Nur wie könnte ich denn an dieser Stelle mein Integer in ein Char konvertieren?

    Speziell geht es ja dann um diese Zeile:

    *hilfe=(char)i;

    Dies würde also bedeuten, dass der Int wert von i einfach als char interpretiert werden soll, wie bekomm ich es jedoch hin, dass es auch als char der selbe "wert" ist?



  • Oh gerade den Link in die FAQ gesehen, werde mir den nochmal anschauen



  • so ich hab es verstanden, brauch sich also nun keiner mehr die mühe machen es mir zu erklären. Danke dir trotzdem!


Anmelden zum Antworten