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.


Anmelden zum Antworten