3桁毎にカンマ ',' で区切られた整数文字列を得る関数を作る。 //********************************************************* // 整数 n を、3桁毎にカンマ(,)で区切られた10進文字列に変換します。 //********************************************************* char *IntToCommaSeparateString( char *str, int n ) { int i = 0; // 書き込んだ桁数 char *p = str; unsigned int u = abs(n); do // while( 0 != u ); { *p++ = "0123456789"[u%10]; u = u / 10; i++; if ( (0!=u) && (0==(i%3)) ) *p++ = ','; }while( 0 != u ); if ( n < 0 ) *p++ = '-'; *p = '\0'; strrev( str ); return str; }//IntToCommaSeparateString 使用例/* 関数 IntToCommaSeparateString() の使用例です。 */ int main( void ) { char str[20]; int n = 1; {for( int i = 0; i < sizeof(str); ++i ) { IntToCommaSeparateString( str, n ); printf( "%*s\n", sizeof(str), str ); n = -( (0==(i%2)) ? n : (n * 10) ); }} IntToCommaSeparateString( str, 0 ); printf( "%*s\n", sizeof(str), str ); IntToCommaSeparateString( str, INT_MIN ); printf( "%*s\n", sizeof(str), str ); IntToCommaSeparateString( str, INT_MAX ); printf( "%*s\n", sizeof(str), str ); return 0; }//main 実行結果1 -1 10 -10 100 -100 1,000 -1,000 10,000 -10,000 100,000 -100,000 1,000,000 -1,000,000 10,000,000 -10,000,000 100,000,000 -100,000,000 1,000,000,000 -1,000,000,000 0 -2,147,483,648 2,147,483,647 |
|