stellenanzahl eines integersermitteln
-
hallo,
ich hab folgenden code:
... char line_buffer[1024]; fgets(line_buffer, sizeof(line_buffer), fd); char *ptr = line_buffer; unsigned next = 0; unsigned pid; while (next < strlen(line_buffer)) { sscanf(ptr+next, "%i", &pid); printf("PID: %i\n", pid); next+=5; }
ich lese dabei eine zeile einer datei. diese enthält integerwerte, welche durch leerzeichen getrennt sind.
der code funktioniert dabei gut für intergerwerte die nur 4 stellen betragen.
sind nun die stellen kürzer oder länger versagt der code.sizeof und strlen kann ich ja nicht nehmen! was gibt es für mich für möglichkeiten mein vorhaben zu realisieren?
-
das funktioniert zwar aber meines erachtens wünschenswert
while (next < strlen(line_buffer)) { sscanf(ptr+next, "%i", &pid); sprintf(tmp, "%d", pid); printf("PID: %i -- %s -- size: %i\n", pid, tmp, strlen(tmp)); next+=strlen(tmp)+1; }
hat jemand ne bessere idee?
-
int GetDigitCount(long x) { int z = 0; while(x!=0) { z++; x/=10; } return z; }
-Ganzzahldivision durch 10 schneidet die letzte Ziffer ab.