第129章 printf関数の新バージョン


文字列関係の関数は新バージョン(VC2005専用)があるのに、printf関数には 新バージョンがないのかと思われた人も多いと思います。実はprintf_s関数というのがあります。

これは、次のようになってます。
int printf_s(
   const char *format [,
      argument]... 
);
使い方は、printf関数と同じです。何が違うのかというと、 printf関数では書式指定文字列(format)がヌルポインタかどうかのみをチェックしているのに対して、printf_s関数は書式指定文字までもチェックします。
/* printfs01.c */

#include <stdio.h>

int main()
{
	printf_s("%s君は、%d歳です。\n", "田中", 20);
	printf_s("佐藤さんは20歳です\n");

	return 0;
}
実行結果は、次のようになります。

これは、どうということもないですね。



整数値を文字列に変換する関数に_itoa関数がありました。これも、新バージョンが用意されています。

errno_t _itoa_s(
   int value,
   char *buffer,
   size_t sizeInCharacters,
   int radix 
);
valueは、文字列に変換するint値です。

変換した文字列を格納するバッファ。

sizeInCharactersは、バッファサイズを指定します。

radixは、基数で2-36の範囲で指定。

では、整数値を10進、16進、2進で表した文字列に変換するプログラムを作ってみましょう。

/* itoas01.c */

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a = 15;
	char sza[8];

	_itoa_s(a, sza, sizeof(sza), 10);

	printf_s("a(10進) = %s\n", sza);

	_itoa_s(a, sza, sizeof(sza), 16);
	printf_s("a(16進) = %s\n", sza);

	_itoa_s(a, sza, sizeof(sza), 2);
	printf_s("a(2進) = %s\n", sza);
}
実行結果は次のようになります。

ま、簡単といえば簡単ですね。




[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Aug/12/2007 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。