質問: i; break; } } writeprivateprofilestring(szbuffilename, japanesesentencekey[number], szbufjapanese, systemfile); writeprivateprofilestring(szbuffilename, romasentencekey[number], szbufroma, systemfile); return; } このような関数です。 エディトコントロールから保存する文字列、タイトルからセクション名を取得します。 そして、for文の中でgetprivateprofilestring関数を使い初期化ファイルのキー名を調べ、そのキー名がないところでfor文のループを抜け出し、そのときのiの値をnumberに保存し、そのnumberの値のキー名のところにエディトコントロールから取得した文字列を保存するというものです。 想定としては、これでこの関数を呼び出すたびにデータのないところに保存されていく関数として作りました。 しかし、実際実行してみると、同じキーのところに何回も保存されていっこうに次のキーに保存しようとしてくれません・・・。 どうしてでしょうか・・??。 一生懸命考えたのですが、全くわかりません・・。 初期化ファイル自体に問題があるのでしょうか? もしかしたら、単純ミスかもしれませんが、初心者ですので勘弁してください。 今回が質問初めてなので、色々と至らないところがありますが、何卒よろしくお願いします!! 長文失礼しました。
回答: if(szbuf == text("nothing")){ が意図したとおりに動作しない原因のようですね。 szbuf の先頭アドレスと、文字列 text("nothing") の先頭アドレスとの比較になっています。(当然、false となります。) _tcscmp() 等で比較を行いましょう。