char Zahlen in int umwandeln
-
Hallo Leute,
ich stehe vor einen Problem und zwar will ich einen Parser programmieren. Der soll eine Datei auslesen. In der Datei kommen char und Zahlen vor. Ich lese die Datei mit getc() aus und erhalte char. Jetzt hab ich das Problem, wenn jetzt die Zahlen kommen z.B. '123', dann hab ich drei Character, die ich in Integer umwandeln muss. Das Problem ist, das die Zahlen unterschiedliche Stellen haben können und jetzt weiß ich keine Lösung bzw. einen Ansatz wie ich das einfach Umsetzen kann.danke für euere Hilfe
gorra
-
du hast ja die anzahl der zeichen, dann kannst du aus den einzelnen zahlen die ganze zahl ausrechen:
123 = 1*100 + 2*10 + 3*1
-
-
ja hatte ich auch erst gedacht, aber da ich das dynamisch programmieren wollte und die Zahlen auch 12, 2, 2131, 323, 32444 sein können mach ich mir die Lösung etwas schwerer.
-
benutze dann [amn]strtok[/man] und dann kannst du mit man: atoi umwandeln. Oder man: sscanf, wenn das Format immer gleich ist.
-
etwa so, wenn nur positive zahlen drin sind:
#include <stdio.h> #include <ctype.h> void numbers (char c) { static long n; static int f; if (isdigit(c)) { n = 10 * n + c-'0'; f = 1; } else if (f) { printf ("found: %d\n", n); n = 0; f = 0; } } int main(void) { char *test = "ga4gsdaj32574sdggjsad6eziuz00weq6767sdgjsad33uqejhgds676"; while (*test) numbers (*test++); numbers(0); }
-
an stelle von long könnte man auch double nehmen, dann kann man noch größere zahlen umwandeln.
negative bekommt man auch relativ leicht, wenn man das minuszeichen vorher checkt.
-
zahlenfrickler-fan schrieb:
an stelle von long könnte man auch double nehmen, dann kann man noch größere zahlen umwandeln.
das mit dem punkt ist dann aber doof.
-
ja, das mit dem punkt ist doof.
aber ein parser sollte trotzdem auch flieskommazahlen lesen können.