Puppyです。こんにちは。お世話になっています。MFCを使っています。
文字キャラクタで埋まったchar型の配列の1キャラクタだけ
文字を上書きしたいのですが、どうしたらよいでしょうか?
char buf[11];
ZeroMemory(buf, sizeof(buf));
CString str;
str = 1234567890;
wsprintf(buf, %s, str);
TRACE(%s\n, buf);
wsprintf(buf + 2, %c, str.GetAt(4));
TRACE(%s\n, buf);
とするとアウトプットウィンドには
1234567890
125
と出ちゃいます。(涙)多分\0も上書きされてしまうからだと思うんですが、本当は
1234567890
1254567890
^^^
と出力されるようにしたいです。
どうしたらよいでしょうか?できたらいろいろな回答(方法)が知りたいです。
よろしくお願いします。m(..)mぺこり
CString str;
str = 1234567890;
str.SetAt(2,str.GetAt(4));
TRACE(%s\n, str);
これで良いのでは?
buf[2] = str.GetAt(4);
不良PGさん お返事ありがとうございます。
実際には長いchar型の配列があるんですぅ。
その場合に1文字だけ上書きしたり、3文字(続けて)上書きしたりする方法は
ありますか?
例えば、配列の内容が
123456789012345678901234567890 の時に
123456789012345677901234567890 のように1文字だけ上書きする方法と
^^^
123456789012345333331234567890 のように5文字だけ上書きする方法が
^^^^^
が知りたいです。お願いしますぅ。m(..)mペコリ
残業になっちゃいました。(涙)
wsprintf(buf + 2, %c, str.GetAt(4));
を
buf[2] = str.GetAt(4);
や
*(buf+2) = str.GetAt(4);
に変えても出来ますね。
あぁ、書いてる間にお返事が。。。
駄犬さん、第3水準さん お返事ありがとうございます。
1文字の上書きはうまくいきました。
文字列の上書きをする方法はありますか?
も一度書きます。例えば、配列の内容が
123456789012345678901234567890 の時に
123456789012345333331234567890 のように5文字だけ上書きする方法が
^^^^^
が知りたいです。(CString::GetAt()を5回連続はしたくないですぅ。)
お願いしますぅ。m(..)mペコリ
ニアミス(^^;
>その場合に1文字だけ上書きしたり、3文字(続けて)上書きしたりする方法は
>ありますか?
>
>例えば、配列の内容が
>
>123456789012345678901234567890 の時に
>
>123456789012345677901234567890 のように1文字だけ上書きする方法と
> ^^^
>123456789012345333331234567890 のように5文字だけ上書きする方法が
> ^^^^^
>が知りたいです。
同一文字を複数回上書きするなら
char *cp;
int i;
cp = 上書きする先頭アドレス;
for(i=0;i<上書きする回数;i++){
*cp++ = 上書きする文字;
}
で上書きできると思います。
文字列の途中を他の文字列で書き換える場合なら
strncpy(書き換える先頭アドレス,上書きする文字列の先頭アドレス,上書きする文字列長);
で上書きできると思います。
第3水準さーん お返事ありがとうございますぅ。
>strncpy(書き換える先頭アドレス,上書きする文字列の先頭アドレス,上書きする文字列
長);
ヘルプを見たら、ばっちりできそうですぅ。(^-^;
これで帰れそうです。ありがとうございました。
皆様 ありがとうございましたぁ。m(..)mペコリ