integer zahl in ein array schreiben
-
Hallo und schöne Feiertage!
Ich habe folgendes PRoblem:
Ich habe einen Wert in einer Integer Variable (zb 234) und ich möchte diesen Wert aufgeteilt in ein Array schreiben( zb Array[0] = 2 Array [1] = 3 usw.)
gibts da ne Funktion dafür oder wie funkt das?
geht das mit unsigned char Variablen auch irgendwie??DAnke
Leo
-
Hi,
wenn du es standardkonform lösen musst, kannst du dir zunutze machen, dass du einzelne Ziffern im Bereich von 0-9 in ASCCI Zeichen umwandeln kannst, indem du ihren Wert auf den Asciiwert von '0' aufaddierst.
Wie du an die Zahl in einzelne Ziffern zerlegst, findest du hier oder im Forum C++ mit der Suche.Aber:
Wenn du Glück hast, hat dein Compiler eine Funktion namens _itoa oder _ltoa.
Die schreibt dir eine Ganzzahl direkt in einen String und ein String ist ja ein Array mit abschließender NULL.
-
Und wenn man weiß, dass es auch sowas wie sprintf() gibt, dann geht das so:
... char array[10]; int zahl = 234; sprintf(array, "%d", zahl); ...
-
Und wenn man dann noch weiss, dass ein int durchaus länger als "array" werden kann, nimmt man gleich ein etwas größeres array und snprintf() anstelle von sprintf...
-
und was muss ich inkludieren, um snprintf() zu benutzen??
-
Steht wie auch sprintf() in der stdio.h. Aber es könnte durchaus sein, dass snprintf() erst mit C99 in den Standard aufgenommen wurde.
-
Hallo,
TactX schrieb:
Steht wie auch sprintf() in der stdio.h. Aber es könnte durchaus sein, dass snprintf() erst mit C99 in den Standard aufgenommen wurde.
genau so ist es, und deshalb kann diese Antwort gerade noch so in einem ANSI-C-Forum durchgehen
Trotzdem steht die Funktion in vielen Umgebungen zur Verfügung:
http://www.die.net/doc/linux/man/man3/snprintf.3.html
MfG
-
freut mich, dass sowas standard ist.
war zuerst misstrauisch, weil ich auf www.cppreference.com nichts darüber gefunden hatte.
-
ich habe ein ähnliches Problem, deshalb schreib ich hierfür mal kein neues Thema...
ich habe die Aufgabe einen Subnet-Calculator zu programmieren, direkt zu Beginn stoße ich also auf das Problem, wie ich eine IP-Adresse am besten einlesen und diese dann in Arrays abspeichern kann.
Hatte mir gedacht, die IP Adresse in einer scanf anweisung einzulesen, wobei die Punkte durch Leerzeichen ersetzt werden sollen. Doch wie bekomm ich dann die einzelnen Teile der IP Adresse in 4 verschiedene Arrays?
-
Warum nicht einfach z.B. so?
#include <stdio.h> unsigned int i1,i2,i3,i4,count; int main(){ scanf("%d.%d.%d.%d",&i1,&i2,&i3,&i4); if(i1<=255 && i2<=255 && i3<=255 && i4<=255) printf("Eingabe ist -> %d %d %d %d\n",i1,i2,i3,i4); else printf("Ungueltige Eingabe\n"); return 0; }
Dann noch die einzelnen Werte schön in ein struct packen (wozu ich jetzt zu faul war...).