int in string oder char umwandeln

TuX_RuLeZ

Grünschnabel
Hallo leute,

ich suche schon seit einigen stunden eine möglichkeit, mit der ich einen integer in ein char array oder ein einfach char umwandeln kann...

ich hoffe ihr könnt mir helfen...

danke im vorraus

PS: ich benutze den gcc compiler in der version 3.3.3
 
Das wie folgt:

char x[länge der Zahl]
int y;

x= (char)y;
------------ wissen musst du eigentlich nur das hier

Für ein Array benötigst du dann entweder zwei Arrays und kopierst auf die gezeigte Art und weise vom einen zum andern oder du generirst dir Objekte
 
ja danke leute...

ich habe auch schon probiert das selbst zu schreiben, nur sind mir die innovationen ausgegangen =)

werds mal mit den tipps probieren
 
Wär aber sicher keine schlechte Übung, hab ich auch schon gemacht...

Gehe in etwa so vor:

-Stellen der Zahl zählen (also bei 345 sinds 3 Stellen, usw...)
-von hinten her jede Stelle einzeln in einen char umwandeln und in ein Array schreiben (du weißt ja jeweils an welche Position im Array, da du vorher die Stellen gezählt hast).

Oder du könntest dir das StellenZählen auch sparen und stattdessen gleich ins Array schreiben, dann wäre das aber verkehrt rum und du müsstest den String hinterher umdrehen.

Weitere Übung: in einer Funktion auch Umwandlungen in Strings verschiedener Basen möglich zu machen.
Ist gar nicht so schwer, mit ein bisschen Überlegen.

Mfg
 
wie kann man denn die stellen eines integers zählen?
ich dachte der ist ordinal...

naja, werd mal sehen ob ich's hinbekomm...

danke für die antwort (und vor allem dafür, dass du mir die lösung net so leicht machst :))

mfg
 
Ich habe mal was versucht:

Code:
#define ASCII_SHIFT 48
char *int_to_str(int i)
{
    char *str;
    int len, tmp, c;
    len = (i < 0) ? 2 : 1;
    for (tmp = i; tmp != 0; tmp /= 10)
        len++;
    str = (char *)malloc(sizeof(char) * len); 
    str[len--] = '\0';
    for (tmp = i, len--; tmp != 0;) {
        c = (tmp >= 0) ? (tmp % 10) : (tmp % 10) * -1;
        str[len--] = (char)(c + ASCII_SHIFT);
        tmp /= 10;
    }
    if (i < 0)
        str[0] = '-';
    return str;
}

Der erste Teil der Funktion ermittelt die notwendige Anzahl an Zeichen, die für den String gebraucht werden. Die eigentliche Konvertierung in einen String findet dann in der zweiten Schleife statt. Womöglich ist das ein bisschen Overkill, aber dafür wird unterm Strich etwas Speicherplatz gespart (bzw. nicht verschendet).
 
Ups, mit dem Wert 0 funktioniert das ganze leider nicht. Am einfachsten hackst du da ganz oben einfach folgendes rein:
Code:
if (i == 0)
    return "0";
0 ist halt ein Sonderfall.
 

Neue Beiträge

Zurück