よろしくお願いします。
配列buf[256]にファイルパスが格納されています。
C:\aaa\bbb\ccc.exe
ここから配列buf2[256]
へ最後の\以下をコピーしたいのですが、
つまり、buf2[256]にはccc.exeを入れたいのですが、
どうしたらよいのでしょうか?
_splitpath関数と_makepath関数を調べてください。
可能であれば、APIのPathFindFileName等も調べてください。
力技でいいのなら
int length = strlen( buf );
for( int i = length ; i >= 0 ; i-- )
{
if( buf[i] == '\\' ) break;
}
strcpy( buf2 , &buf[i + 1] );
こんな感じでできるかと。
ちゃんとした関数使ったほうがいいかもですが;;
> ちゃんとした関数使ったほうがいいかもですが;;
マルチバイトを意識していないので、この方法は無理です。
(2バイト目が\の全角文字がダメ)
# _mbsrchrで\の位置を探すならばOK
_splitpath関数ならば、そこら辺意識して区切ってくれます。
> マルチバイトを意識していないので、この方法は無理です。
おっしゃるとおりです。完全に失念していました。
以前自分の作ったプログラムで上のような力技でパスを切っていたりしたんですが…かなり危険だったんですね。
ご指摘ありがとうございました。
ツイート | ![]() |