[C++]デバッグ出力用の関数を作ったのですが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あるミカン

[C++]デバッグ出力用の関数を作ったのですが・・・

#1

投稿記事 by あるミカン » 4年前

コード:

#include <Windows.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
	// デバッグ出力用関数のテスト
	char temp[64] = {};
	char *debuglog = "%2$d行目のコマンド %1$sは不正です。\n"; // 出力する情報
	char *func = __FUNCTION__; // 渡されるであろう引数1(今回は関数名)
	int line = __LINE__; // 渡されるであろう引数2(今回は行数)
	sprintf_s(temp, "Function %s : Line %d\n", func, line); // OK

//	C#のString.Format("{1}行目のコマンド {0}は不正です。", func, line);のような処理がしたい。
	sprintf_s(temp, debuglog, func, line); // NG
	OutputDebugStringA(temp);
	return 0;
}
はじめまして、あるミカンです。

実行すると // NG のところでIncorrect format specifier(誤った書式指定子)のエラーが出ます。
何がいけないのか調べても分からなかったので回答お願いします。

根本的な解決にならないため、渡す引数の順番変えればいいという回答はナシでお願いします。

アバター
へにっくす
記事: 628
登録日時: 7年前
住所: 東京都

Re: [C++]デバッグ出力用の関数を作ったのですが・・・

#2

投稿記事 by へにっくす » 4年前

あるミカン さんが書きました:実行すると // NG のところでIncorrect format specifier(誤った書式指定子)のエラーが出ます。
何がいけないのか調べても分からなかったので回答お願いします。

根本的な解決にならないため、渡す引数の順番変えればいいという回答はナシでお願いします。
単純に使う関数を間違えています。位置指定パラメータを使用できる関数を使ってください。
_sprintf_p、_sprintf_p_l、_swprintf_p、_swprintf_p_l
written by へにっくす

あるミカン

Re: [C++]デバッグ出力用の関数を作ったのですが・・・

#3

投稿記事 by あるミカン » 4年前

へにっくすさん ありがとうございます。

指摘された点を修正したら望む結果になりました!
リンク先にも欲しかった情報書いてあるし・・・恥ずかしい//
これはもっと勉強しなきゃいけませんね

閉鎖

“C言語何でも質問掲示板” へ戻る