Überprüfen wieviel stellen eine Ganzzahl hat?



  • Es soll nur eine Zahl übergeben werden wenn sie im bereich 0.... 65635 liegt:

    int hh= 1233455;
    
    char acZahl[6];
    
    if (hh<= 0xFFFF || hh < 0 )
        sprintf(acZahl,"%0.5i",hh);
    else
        sprintf(acZahl,"%s","#####");
    
    printf("%s",acZahl);
    

    kann man den code noch bischen schöner machen?



  • Hi !

    int check_ranges( int num )
    {
    	return num >= 0 && num <= 0xFFFF;
    }
    

    0xFFFF ist übrigens 65535 :p



  • K/A was du unter schön verstehst, ich würd's allgemeiner fassen:

    #include <string.h>
    
    void print_num_n( char *dst, unsigned long num, unsigned char n ) {
    
    	char fmt[ 7 ];
    	unsigned char i = 0;
    	unsigned long limit = 1;
    
    	for( ; i < n; ++i ) {
    
    		limit *= 10;
    	}
    
    	if( num < limit ) {
    
    		sprintf( fmt, "%%0%uu", n );
    		sprintf( dst, fmt, num );
    		return;
    	}
    
    	for( i = 0; i <= n; ++i ) {
    
    		dst[ i ] = '#';
    	}
    
    	dst[ n + 1 ] = 0;
    }
    

    greetz, Swordfish

    BTW: Der Fehler in deinem sprintf -Format ist Dir bewusst?



  • ja sorry meinte 65535

    naja ok so wie du deine funktion aufrufst frag ich ja ab.. dachte man könnte die if else mthode und sprintf etwas eleganter lösen.. naja egal;)



  • BorisDieKlinge schrieb:

    Es soll nur eine Zahl übergeben werden wenn sie im bereich 0.... 65635 liegt:

    if ((unsigned)zahl & ~0xffff)
    {
       // nein
    }
    else
    {
       // ja
    }
    

    🙂


Anmelden zum Antworten