"プレースホルダーとそのパラメーターには 0 の可変個引数が必要ですが、1 が指定されています。" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
warning C4474: 'printf': 書式文字列に渡された引数の数が多すぎます<ソース名>): note: プレースホルダーとそのパラメーターには 0 の可変個引数が必要ですが、1 が指定されています。

ソース(バグ有り):

#include <string.h>
#include <stdio.h>
int main(void)
{

	char searchString[64] = "abcdefghijklmnopqrstuvwxyz";
	char *p;

	p = strstr(searchString,"stu");

	printf("stu 以後文字列はこれです。\n",p);
	
	return 0;
}


原因:
printf で指定した書式化文字列に対する引数に誤りがあります。

wsprintf で ポインタ p を引数として渡していますが、書式化文字列で指定されていません。

対処:
書式化文字列に対する引数を確認します。

この例では、書式化文字列内で p に対応する %s を追加します。


ソース(修正済み):

#include <string.h>
#include <stdio.h>
int main(void)
{

	char searchString[64] = "abcdefghijklmnopqrstuvwxyz";
	char *p;

	p = strstr(searchString,"stu");

	printf("stu 以後文字列はこれです。%s\n",p);
	
	return 0;
}

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]