生物物理計算化学者の雛

主に科学に関する諸々を書き留めています。

C言語のprintf文の出力フォーマット使い方例

C言語のprintf文は出力フォーマットを柔軟に指定することができるので、使いこなせると便利です。

知っておくと便利な例を下に記述します。

特にsprintf関数はchar型配列に出力結果の文字列を渡すことができ何かと便利です。

#include <stdio.h>

void main(){

	int    i1 =  123;
	int    i2 = -1234567890;
	double d1 =  123.456789;
	double d2 = -1234567890.1234; 
	char s[256] = "abcdefg";

	printf("固定テキスト表示\n");
	printf("特殊記号を表示 [%%] [\\] [\"] [\'] [\$] \n");
	printf("整数値を表示      [%d], [%d] \n", i1, i2);
	printf("浮動小数点数を表示 [%f], [%f] \n", d1, d2);
	printf("文字列(char配列)を表示 [%s] \n", s);

	printf("\n");

	printf("ケタ数を指定して整数を表示  [%6d] [%06d] \n", i1, i1);
	printf("  指定ケタ数より多い場合    [%6d] [%+06d] \n", i2, i2);
	printf("符号を付与して整数を表示    [%+d] [%+6d] [%+06d] \n", i1, i1, -i1);

	printf("\n");

	// %10.3f の意味は 「小数点以下は3桁を表示し、全体で10桁(つまり、整数部6桁 + "."1桁 + 小数部3桁 = 計10桁)」
	printf("ケタ数を指定して浮動小数点数を表示 [%10.3f] [%010.3f] \n", d1, d1);
	printf("  指定ケタ数より多い場合           [%10.3f] [%010.3f] \n", d2, d2);
	printf("符号を付与して浮動小数点数を表示   [%+10.3f] [%+010.3f] \n", d1, -d1);
	printf("指数形式で浮動小数点数を表示       [%+e] [%.3e] [%.10e] \n", d1, d1, d1);

	printf("\n");

	char buf[256];
	sprintf(buf, "sprintfによりchar配列に出力結果を渡せる [%08d] ", i1);
	printf("sprintf出力 \"%s\" \n", buf);

	return;
}
実行結果
固定テキスト表示
特殊記号を表示 [%] [\] ["] ['] [$] 
整数値を表示      [123], [-1234567890] 
浮動小数点数を表示 [123.456789], [-1234567890.123400] 
文字列(char配列)を表示 [abcdefg] 

ケタ数を指定して整数を表示  [   123] [000123] 
  指定ケタ数より多い場合    [-1234567890] [-1234567890] 
符号を付与して整数を表示    [+123] [  +123] [-00123] 

ケタ数を指定して浮動小数点数を表示 [   123.457] [000123.457] 
  指定ケタ数より多い場合           [-1234567890.123] [-1234567890.123] 
符号を付与して浮動小数点数を表示   [  +123.457] [-00123.457] 
指数形式で浮動小数点数を表示       [+1.234568e+002] [1.235e+002] [1.2345678900e+002] 

sprintf出力 "sprintfによりchar配列に出力結果を渡せる [00000123] "