C言語関係掲示板

過去ログ

No.1330 string型からchar型へ変更できない

[戻る] [ホームページ]
No.17992

sring型からchar型へ変更できない
投稿者---たて(2004/11/11 18:48:23)


sring型からchar型へ変更できないのですが、、

char* CChild = " ";
string ss = "aaa";
sprintf( CChild, "%s", ss );
::OutputDebugString(CChild);

間違ってますか?


No.17996

Re:sring型からchar型へ変更できない
投稿者---nop(2004/11/11 19:14:06)


>char* CChild = " ";
>string ss = "aaa";
>sprintf( CChild, "%s", ss );
>::OutputDebugString(CChild);
>間違ってますか?

間違ってます。

・「CChild」に文字列リテラルのポインタを代入しているにも関わらず、
 「CChild」の示す内容を更新しようとしている。
・sprintf()の書式で「%s」を指定しているにも関わらず、
 「char *」型の引数を渡していない。


致命的なのは、この二点でしょう。



No.17999

Re:sring型からchar型へ変更できない
投稿者---たて(2004/11/11 19:25:46)


これでよいでしょうか?
よくわかりません。

char CChild[256] = " ";
string ss = "aaa";
sprintf( CChild, "%s", ss );


No.18002

Re:sring型からchar型へ変更できない
投稿者---nop(2004/11/11 19:47:45)


>これでよいでしょうか?

何故、ご自分で試そうとしないのですか?

>よくわかりません。

何がわからないのでしょうか?


# 「掲示板ご利用上の注意」はよく読んで、
# 書いてある内容に従って投稿しましょう。


No.18003

Re:sring型からchar型へ変更できない
投稿者---たて(2004/11/11 20:08:20)


さきほどはすみませんでした。
今、自分で試したのですが、
sprintfを実行後にCChildに文字が入ってきません。

char CChild[256]=" ";
string ss = "aaa";
sprintf( CChild, "%s", &ss );

sring型からchar型は物理的に変更できないのでしょうか?
お答えお願いします



No.18006

Re:sring型からchar型へ変更できない
投稿者---RAPT(2004/11/11 20:22:09)


std::stringについて調べてみれば分かることだが。
std::string::c_str()を使えば、const char * を得ることができます。

int main()
{
    char CChild[256] = {0};
    std::string ss = "aaa";
    sprintf( CChild, "%.255s", ss.c_str() );
    puts( CChild );
    return 0;
}