あるファイル名のある箇所だけの抜き取り方がわからないので、
知っている方は教えてください。
例)
「 ?????_?????_20040625_?????.txt 」というのファイルの「 20040625 」の部分だけ
を抜き取りたい
ファイル名といえど、所詮は文字列でしかありません。
フォルダ名を取るとか拡張子を取るとか、ファイル名固有の処理ではない以上、
普通に文字列処理でいいでしょう。
それ以上の具体的な答えをお望みでしたら、
そちらも具体的な環境を提示してください。
シャノンさん、すみません。
開発環境は VC++ .NET( MFC )です。
抜き取る規則が不明です。
- X文字目からY文字?
- 数字の連続?
- 二つ目の_から次の_まで?
- ほかのなにか?
ちゃんと質問しないとちゃんと答えてもらえません。
抜き取る条件は、二つ目の_から次の_までです。
説明不足で、どうもすみません。
#include <string.h>
#include <stdio.h>
int main() {
char filename[] = abcdef_ghijkl_1234567_mnopqrstuvw.xyz;
char* p;
strtok(filename, _); strtok(0, _);
p = strtok(0, _); strtok(0, _);
puts(p);
return 0;
}
なら、文字列のはじめから一バイトずつチェックして二つ目の_が出てきたら
その次の位置から一バイトずつ取得用のバッファに追加していく。
三番目の_が見つかったら、追加をやめて終了。
ただ、?部分の桁数や取得する部分の桁数がいつも同じなら、
直接、n文字目からm文字分を取り出すようにした方が手っ取り早いかも。
あぁ、私の泥臭すぎますね。(T-T)
sscanf(src, %*[^_]_%*[^_]_%[^_], dst); とか。
# 顔文字みたいに見えるが大マジ。
皆さん、どうもありがとうございました。
おかげさまで解決しました。