int als char * ausgeben
-
Möchte ein int in einen char * umwandeln. Sozusagen die zahl als String ausgeben. Wie geht das
-
Das ist eine häufig gestellte Frage.
-
-
AUA AUA AUA
daishi, tu mir und vielleicht noch anderen einen Gefallen, und halt dich einfach raus wenn du mal was nicht weisst OK?
-
Das sollte jetzt funktionieren:
#include <stdio.h> static void xxtoa ( unsigned long val, char *buf, unsigned radix, int is_neg ) { char *p; /* pointer to traverse string */ char *firstdig; /* pointer to first digit */ char temp; /* temp char */ unsigned digval; /* value of digit */ p = buf; if (is_neg) { /* negative, so output '-' and negate */ *p++ = '-'; val = (unsigned long)(-(long)val); } firstdig = p; /* save pointer to first digit */ do { digval = (unsigned) (val % radix); val /= radix; /* get next digit */ /* convert to ascii and store */ if (digval > 9) *p++ = (char) (digval - 10 + 'a'); /* a letter */ else *p++ = (char) (digval + '0'); /* a digit */ } while (val > 0); /* We now have the digit of the number in the buffer, but in reverse order. Thus we reverse them now. */ *p-- = '\0'; /* terminate string; p points to last digit */ do { temp = *p; *p = *firstdig; *firstdig = temp; /* swap *p and *firstdig */ --p; ++firstdig; /* advance to next two digits */ } while (firstdig < p); /* repeat until halfway */ } /* Actual functions just call conversion helper with neg flag set correctly, and return pointer to buffer. */ char * itoa ( int val, char *buf, int radix ) { if (radix == 10 && val < 0) xxtoa((unsigned long)val, buf, radix, 1); else xxtoa((unsigned long)(unsigned int)val, buf, radix, 0); return buf; } int main(int argc, char* argv[]) { int zzzz=15; char blabla[20]; itoa(zzzz,blabla,10); printf("%s",blabla); return 0; }
Ich hab mir einfach die _itoa von C++ ausgeborgt und hoffentlich alles auf C umgebogen.
-
Was soll denn das jetzt werden?
Wenn Ataman ein int ausgeben will (was wohl gemeint war) dann geht das wohl etwas einfacher:
int i = 24; printf( "Mein int = %d", i);
Und wenn er das int umwandeln will braucht er das doch nicht selber programmieren.
-
und wenn man ihn ned ausgeben will, gehts auch ganz einfach ...
int i = 24; char buffer[100]; // richtig unter C ? sprintf(buffer, "%d", i);
// PS, nimmt man haeufig auch noch unter C++, weil die stream operationen doch ein bisserl unflexibel sind ...
Ciao ...
-
RHBaum schrieb:
// PS, nimmt man haeufig auch noch unter C++, weil die stream operationen doch ein bisserl unflexibel sind ...
Huch. Das musst du mir aber mal erklären.
-
sie sind flexibler, aber umständlicher