こんばんは!お世話になります。
長文になりますが、すみません。<(_ _)>
環境:Windows7(32bit)
Microsoft Visual C++ 2008 Express Edition SP1
(今回は、DXライブラリは未使用だと思われます。
程度の、プログラミング初心者です。^^;)
今、参考させて頂いている本に搭載されている例題のソースに
(以下のソース:「14歳からはじめる C言語オンラインゲーム プログラミング教室」
内のソースを引用させて頂きます。)
#include <stdio.h>
#include <string.h>
int main(void){
char str1[80] = "HELLO! HELLO!";
char str2[80] = "世界";
int num = 100;
//strncatを使った連結
strncat_s( str1, sizeof(str1), str2, _TRUNCATE);
printf( str1 );
printf( "\n" );
}
とありました。
このソースを munba.c(と名付けたファイル)に記述し
「デバッグ無しで開始(Ctrl+F5)」で実行すると
HELLO! HELLO!世界
と、コマンドプロンプトで表示されます。
上述のソースの10行目の
strncat_s → strncat に変更して、「デバッグ無しで開始(Ctrl+F5)」で実行しようとすると
1>------ ビルド開始: プロジェクト: munba, 構成: Debug Win32 ------
1>コンパイルしています...
1>munba.c
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : warning C4047: '関数' : 間接参照のレベルが 'const char *' と 'unsigned int' で異なっています。
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : warning C4024: 'strncat' : の型が 2 の仮引数および実引数と異なります。
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : warning C4047: '関数' : 間接参照のレベルが 'size_t' と 'char [80]' で異なっています。
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : warning C4024: 'strncat' : の型が 3 の仮引数および実引数と異なります。
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : warning C4020: 'strncat' : 実引数が多すぎます。
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : warning C4996: 'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(144) : 'strncat' の宣言を確認してください。
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>ビルドログは "file://?:\Users\???\Documents\Visual Studio 2008\Projects\munba\Debug\BuildLog.htm" に保存されました。
1>munba - エラー 0、警告 6
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
以上の警告が6つ出て
「munba.exeは動作を停止しました
問題が発生したため、プログラムが正しく動作しなくなりました。
プログラムは閉じられ、解決策がある場合はWindowsから通知されます。」
この画面で、右下に「プログラムの終了(C)」と出るので
このボタンを押すと、プログラムが終了して
コマンドプロンプト画面内?に
「続行するには、何かキーを押してください...」と出るので
何かキーを押すと、コマンドプロンプトが終了します。
一方、この元のソース(strncat_s のまま)を
munba.cpp(ファイル)で実行すると、正常に実行されてる様なのですが
strncat_s → strncat に変更すると
「ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」
と表示され
出力元の表示(S):ビルド内?には
1>コンパイルしています...
1>munba.cpp
1>?:\users\???\documents\visual studio 2008\projects\munba\munba.c(10) : error C2660: 'strncat' : 関数に 4 個の引数を指定できません。
1>ビルドログは "file://?:\Users\???\Documents\Visual Studio 2008\Projects\???\Debug\BuildLog.htm" に保存されました。
1>munba - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
漠然とした質問で、大変申し訳ないのですが
過去ログの
http://dixq.net/board/log/bbslog_88.html (No:28295 )
の、ご質問にも _TRUNCATE がありました。
今まで購入した本には搭載されていなかったので
ひたすらネットで検索かけて調べてみたのですが
関数の第4引数に使用される場合が多いという事が解っただけで
自力では理解できませんでした。
_TRUNCATE って何ですか?
今まで調べていて、こんな時間になってしまいました。
理解できなかったので質問させて頂きました。
勝手ながら、今日は寝てしまいます。<(_ _)>
申し訳御座いませんが、ご指導頂ける方、宜しくお願い致します。
_TRUNCATE って何ですか?
Re: _TRUNCATE って何ですか?
ドキュメントぐらい読む習慣をつけましょう。
http://msdn.microsoft.com/ja-jp/library ... S.80).aspx
http://msdn.microsoft.com/ja-jp/library ... S.80).aspx
Re: _TRUNCATE って何ですか?
おはようございます。
高木さん、サイトのご紹介ありがとうございました。
こういうページがあるのを初めて知りました。
勉強不足です。すみません。
読んでみます。ありがとうございました。(謝
高木さん、サイトのご紹介ありがとうございました。
こういうページがあるのを初めて知りました。
勉強不足です。すみません。
読んでみます。ありがとうございました。(謝