Ü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 }