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