[C/C++] problem beim umwandeln von int nach char

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Pac_-_man, 25. Februar 2007 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 25. Februar 2007
    problem beim umwandeln von int nach char

    Hi!
    Also ich weiß auch nicht warum das nicht klappt. Ich versuche einfach nur folgendes:

    Code:
     for (int i=0; i<10; i++)
     {
     char FILENAME[33] = "/Pictures/Asteroid/ASTEROID0.PNG";
    
     FILENAME[27] = static_cast<char>(i); //Die Null hinter ASTEROID soll umgewandelt werden
    
     cout << FILENAME<<"\n";
     }
    
    So, das funktioniert aber irgendwie nicht. Kann mir da nicht jemand helfen? Ich will das hinter "ASTEROID" der Reihe nach die Zahlen von 0-9 gesetzt werden. Warum klappt das nicht?
     
  2. 25. Februar 2007
    AW: problem beim umwandeln von int nach char

    Das Problem, was da auftritt ist ein ganz gemeines. (Glaub ich zumindest ) also:

    Code:
    FILENAME[27] = static_cast<char>(i);
    da steckt der Fehler vermutlich im Detail... wie du sicherlich weist, werden die Zahlen innerhalb des Computers im Binärsystem gespeichert. Genauso werden die Zeichen im Binärsystem codiert.

    Das Problem ist hier vermutlich, dass nicht die Zahl selber in ein Char umgewandelt wird, sondern einfach der Bitcode als Char interpretiert wird. Und wenn man die Zahlen 0 bis 9(im Bitcode) als Chars betrachtet, erhält man Steuerzeichen! Diese werden natürlich nicht dargestellt.

    Wenn du die Null darstellen willst, dann entspricht das im ASCII-Code einem Wert von 30 (Hex) = 48(dec). Also sollte sich das Problem einfach lösen lassen :

    Code:
    FILENAME[27] = static_cast<char>(i+48);
    Das sollte das Problem hoffentlich beheben.

    Gruß vom Niederrhein(er)
     
  3. 25. Februar 2007
    AW: problem beim umwandeln von int nach char


    1. Wieso nutzt du nicht string?
    2. brauchst du keine Groesse angeben wenn du ihn schon beim deklarieren initialisierst
    3. Werden nur Makros o.ae. gross geschrieben, es gehoert sich nicht normale Variablen
    gross zu schreiben

    Beispiel (mit char):

    Code:
    #include <iostream>
    #include <cstring>
    
    int main( int argc, char *argv[] )
    {
     char szFilename[] = { "/Pictures/Asteroid/ASTEROID0.PNG" };
     int iFilename = 0;
    
     iFilename = strcspn( szFilename, "0" );
    
     szFilename[iFilename] = '1';
    
     std::cout << szFilename << std::endl;
    
     return EXIT_SUCCESS;
    }
    Kannst jetzt halt ne for-Schleife reinhaun o.ae.
     
  4. 25. Februar 2007
    AW: problem beim umwandeln von int nach char

    Ich kann zu den oberen Beiträgen nichts sagen, aber was ist wenn
    i > 9 wird dann wird das ganze ja nicht gehen;

    ich würde dann dies so machen:

    Code:
    [COLOR="Green"]#include <cstdlib>
    #include <iostream>[/COLOR]
    
    [B]int [/B]main([B]int [/B]argc, [B]char [/B]*argv[])
    {
     
     [B]for [/B]([B]int [/B]i=0; i<12; i++)
     {
    
     [B]char [/B]filename[255] = [COLOR="Red"]"/Pictures/Asteroid/ASTEROID0.PNG"[/COLOR] ;
     [B]char [/B]filenameres[255] = [COLOR="Red"]""[/COLOR];
     [B]char [/B]fposstring[10] = [COLOR="Red"]""[/COLOR];
     [B]int [/B]fpos = 0;
    
     fpos = strcspn( filename, [COLOR="Red"]"0"[/COLOR] );
     
     itoa(i, fposstring, 10);
    
     strncpy(filenameres, filename, fpos);
     strcat(filenameres, fposstring);
     strcat(filenameres, &filename[fpos+1]);
     
     std::cout << filenameres << std::endl;
     }
    
     system([COLOR="Red"]"PAUSE"[/COLOR]);
     [B]return [/B]EXIT_SUCCESS;
    }
    
    Da wird einfach der erste Teil des Strings in einen leeren Kopiert, dann wird die Zahl als String
    angehongen und zum Schluss der letzte Teil des Strings kopiert. Mahr brauch ich wohl nicht zu
    erklären oder?

    Mfg

    Rushh0ur
     
  5. 25. Februar 2007
    AW: problem beim umwandeln von int nach char

    Darf ich fragen wie du auf die Idee kommst das i einen Wert bekommt der groesser
    als 9 ist obwohl es in der for-Schleife so angegeben wurde?

    Selbst wenn..
    Dann suchst halt nach der Position von 0 in dem Char-Array und merkst dir den
    restlichen Teil, aenderst die zahl und fuegst den dann wieder zusammen.
     
  6. 25. Februar 2007
    AW: problem beim umwandeln von int nach char

    Danke das wars! daran hatte ich garnicht gedacht... vielen dank! bw an dich ist raus!

    ~closed~
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.