ページ 11

音声データの読み込み

Posted: 2013年3月18日(月) 17:43
by kinder
こんばんは。
media\\sound\\voice\\にあるCH00VO00~CH00VO20までの音声データをロードしたいのですが、
アクセス違反が起こってしまいます。どうすればいいでしょうか・・。

コード:

for(int i=0;i<21;i++){
	char *string = "media\\sound\\voice\\CH00VO";
	strcat(string, (char*)i);
	strcat(string,".wav");
	CH00VO[i]= LoadSoundMem(string);
}

Re: 音声データの読み込み

Posted: 2013年3月18日(月) 18:03
by h2so5
strcatの使い方がおかしいですね。
snprintfを使ったほうが簡単だと思います。

コード:

for(int i=0;i<21;i++){
	const char *common_path = "media\\sound\\voice\\CH00VO";
	char string[256];
	snprintf(string, sizeof(string), "%s%02d.wav", common_path, i);
	CH00VO[i]= LoadSoundMem(string);
}

Re: 音声データの読み込み

Posted: 2013年3月18日(月) 18:23
by kinder
返信ありがとうございます。

書いていただいたコードでやってみたら、下記のログ?が出たのですがアクセス違反はでなくなり、プログラムも実行されました。
このログは無視で良いのでしょうか・・

warning C4996: '_snprintf': This function or variable may be unsafe. Consider using _snprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
'_snprintf' の宣言を確認してください。

Re: 音声データの読み込み

Posted: 2013年3月18日(月) 18:34
by みけCAT
多分wsprintfを使えば大丈夫ではないでしょうか?

コード:

wsprintf(string, "%s%02d.wav", common_path, i);
無視でもいいです。

Re: 音声データの読み込み

Posted: 2013年3月18日(月) 18:44
by kinder
wsprintf(string, "%s%02d.wav", common_path, i);
を使ったら何の問題も無くできました!
お二人ともありがとうございました!

コード:

for(int i=0;i<21;i++){
	const char *common_path = "media\\sound\\voice\\CH00VO";
	char string[256];
	wsprintf(string, "%s%02d.wav", common_path, i);
	CH00VO[i]= LoadSoundMem(string);
}