文字列操作


白馬  2005-09-09 03:41:10  No: 58912

よろしくお願いします。

配列buf[256]にファイルパスが格納されています。
C:\aaa\bbb\ccc.exe
ここから配列buf2[256]
へ最後の\以下をコピーしたいのですが、
つまり、buf2[256]にはccc.exeを入れたいのですが、
どうしたらよいのでしょうか?


Blue  2005-09-09 03:49:36  No: 58913

_splitpath関数と_makepath関数を調べてください。

可能であれば、APIのPathFindFileName等も調べてください。


ミン  2005-09-09 23:50:38  No: 58914

力技でいいのなら

int length = strlen( buf );

for( int i = length ; i >= 0 ; i-- )
{
  if( buf[i] == '\\' ) break;
}

strcpy( buf2 , &buf[i + 1] );

こんな感じでできるかと。
ちゃんとした関数使ったほうがいいかもですが;;


Blue  2005-09-09 23:55:18  No: 58915

> ちゃんとした関数使ったほうがいいかもですが;;
マルチバイトを意識していないので、この方法は無理です。
(2バイト目が\の全角文字がダメ)
# _mbsrchrで\の位置を探すならばOK

_splitpath関数ならば、そこら辺意識して区切ってくれます。


ミン  2005-09-10 00:06:46  No: 58916

> マルチバイトを意識していないので、この方法は無理です。
おっしゃるとおりです。完全に失念していました。

以前自分の作ったプログラムで上のような力技でパスを切っていたりしたんですが…かなり危険だったんですね。

ご指摘ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加