
No.3ベストアンサー
- 回答日時:
>文字列を初めNULLで埋めておき、必要なセクション情報を何個か追加するため _stprintf_s を使用しましたが、これを実行した直後にNULLが変ってしまいます。
NULLではない…というのは突っ込んだ後なのでいいとして……
VC++2008EEで下記のようにして確認してみました。
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR buf[50] = {0};
_stprintf_s(buf, 50, _T("T = %d"), 100);
return 0;
}
_stprintf_s()の行にブレークポイントを置いて、DebugビルドとReleaseビルドでステップオーバーしてみました。
Debugビルドだと確かに0xfefeで埋められてしまいますね。
ライブラリ側でそういう動作をするように作られているのでしょう。
# おそらく…第2引数に指定したサイズが誤っていないか、領域を埋めるコトで
# バッファーオーバーランチェック用の領域まで書き換えていないか確認する為……なのでしょう。
ちなみに、デバッグ版のランタイムが未初期化のローカル変数に突っ込むのは0xccでした。
ライブラリ側の仕様っぽいので、
>目的は「WritePrivateProfileSection」を使用していまして、この関数は最後はNULLを2つにしておく必要がある
文字列長を取得して、'\0'の後にさらに'\0'を書き込む。
という処理を追加しておいた方がいいでしょう。
No.2
- 回答日時:
デバッグ版だとローカル変数とかの初期値として特定の値を設定するようにランタイム側で処理してくれていたりしますけど……。
>実行すると「T=100」の後にNULLがきて
NULLではなく'\0'かと。
No.1
- 回答日時:
> 残りの部分には0xfefeが文字列バッファの最後までコピーされます。
このことをどうやって確認しましたか?
最初っから入ってたんじゃなくて?
この回答への補足
回答ありがとうございます。
目的は「WritePrivateProfileSection」を使用していまして、この関数は最後はNULLを2つにしておく必要があるため、文字列を初めNULLで埋めておき、必要なセクション情報を何個か追加するため _stprintf_s を使用しましたが、これを実行した直後にNULLが変ってしまいます。
確認は「ウオッチ」ウィンドウです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
- Excel(エクセル) エクセルでA列セル内で折り返すことなく、文字列を、B列C列・・・側に一行に 2 2022/07/23 02:02
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) セルの値 11 2022/06/29 11:00
- 計算機科学 急ぎです、大学数学再帰の問題難しくてがわからないです。 以下の4つの文字列を連結して新たに生成できる 1 2023/05/17 20:11
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
16表記の文字列を数字に直した...
-
エクセルで文字列の最大値を抽...
-
エクセルでSQLでいうところの「...
-
【Excel VBA】複数ある特定の文...
-
VBA2005 16進を2桁で表示したい。
-
vbsからバッチファイル実行時の...
-
Access2000 (VBA) ' & "など...
-
Excelで3E8を3.00E+8にしない方...
-
VBの「As String * 128」とは?
-
ORCLEでの小数の表示方法の変更...
-
VB6.0のString関数に代わるVB20...
-
エクセル 数値データを桁をそ...
-
C++のdefine文の使い方の質問で...
-
テキストエディタ 検索、置き換...
-
LEFT関数で文字数を指定しない...
-
bashスクリプトでの文字列から...
-
変数に入れた文字列(定数)で書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
Excelで3E8を3.00E+8にしない方...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
VBの「As String * 128」とは?
-
エクセルでセル内の文字列の最...
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
-
LEFT関数で文字数を指定しない...
-
アクセスで特定の数字以外(複...
おすすめ情報