C言語関係掲示板

過去ログ

No642 文字列から任意のファイル名を検索

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

文字列から任意のファイル名を検索
投稿者---しぶちゃ(2003/05/29 00:30:58)


はじめまして。
プログラム初心者ではないのですがご教授下さい。
文字列からファイル名(XXX.txtなど)を検索する
処理を作成しようと思っているのですが、たとえば拡張子「.txt」の部分までは、検索対象文字列から取得することはできるのですが、
ファイル名は任意の文字列な為、取得するのにどうすればいいか悩んでいます。
例えば
「http://im.ghi.kjs.net/alkl/test.txt」
から
「test」を取得したいのですが。。。

ファイル名の前には必ず「/」があるのが条件なのですが、
前方から「/」までを検索してファイル名を取得する処理にすれば
いいのか、「.txt」を検索してファイル名を取得する処理に
すればいいのか頭がこんがらがっています。
なにかヒントでも頂ければ、とてもうれしいです。




No.6890

Re:文字列から任意のファイル名を検索
投稿者---通りすがり(2003/05/29 02:19:16)


/を探して.txtが無かったらはじくよりは
.txtとを見つけて先頭の/を探したほうが
判定回数は少なそうですね。
まあどっちでも出来ると思いますけど。
.txtを探して一文字ずつ戻って/が入ったら止める。
入らないなら判定処理終了して次の.txtを探しに・・・
って感じでどうでしょうか。
ファイル名という想定なら短いですから一文字バックが楽かなと。

No.6891

Re:文字列から任意のファイル名を検索
投稿者---YuO(2003/05/29 02:24:58)


>文字列からファイル名(XXX.txtなど)を検索する
>処理を作成しようと思っているのですが、たとえば拡張子「.txt」の部分までは、検索対象文字列から取得することはできるのですが、
>ファイル名は任意の文字列な為、取得するのにどうすればいいか悩んでいます。

任意の文字列の条件をもっと狭くして下さい。
現状では答えようがないです。


>例えば
>「http://im.ghi.kjs.net/alkl/test.txt」
>から
>「test」を取得したいのですが。。。

URL限定ですか?

さらに,alklは「ファイル名ではない」と判断する必要があるのですね?


No.6892

Re:文字列から任意のファイル名を検索
投稿者---しぶちゃ(2003/05/29 07:49:52)


レスありがとうございます。
また、質問の内容が不足していて
申し訳ございません。

>任意の文字列の条件をもっと狭くして下さい。
>現状では答えようがないです。

拡張子「*.txt」は必ず文字列に含まれテキストファイル名
だけが任意のファイル名となります。

>URL限定ですか?

その通りです。URL限定です。

>さらに,alklは「ファイル名ではない」と判断する必要があるのですね?

はい、判断の方法は拡張子の有無で判断できる
と思っています。

条件は、
ファイル名の前には必ず「/」があり、
ファイル名には拡張子「.txt」が付加されています。

説明不足で申し訳ございませんでした。
何かヒントを頂ければと思ってます。


No.6894

Re:文字列から任意のファイル名を検索
投稿者---TDa(2003/05/29 09:22:33)



>はい、判断の方法は拡張子の有無で判断できる
>と思っています。
>
>条件は、
>ファイル名の前には必ず「/」があり、
>ファイル名には拡張子「.txt」が付加されています。

それなら文字列のケツから見ていって".txt"じゃなければスキップ
".txt"ならさらにさかのぼって'/'までがファイル名でいいんじゃない。

No.6905

Re:文字列から任意のファイル名を検索
投稿者---ヒカル(2003/05/29 13:36:45)


>>条件は、
>>ファイル名の前には必ず「/」があり、
>>ファイル名には拡張子「.txt」が付加されています。
>
>それなら文字列のケツから見ていって".txt"じゃなければスキップ
>".txt"ならさらにさかのぼって'/'までがファイル名でいいんじゃない。

こんにちは、ヒカルです。

>それなら文字列のケツから見ていって".txt"じゃなければスキップ
そして、.txtであればstrrchr()関数で /の後ろ側を取得したら
どうでしょうか。

strrchr( 文字列, '/' );



No.6906

Re:文字列から任意のファイル名を検索
投稿者---YuO(2003/05/29 13:59:37)


>>さらに,alklは「ファイル名ではない」と判断する必要があるのですね?
>はい、判断の方法は拡張子の有無で判断できる
>と思っています。

できません。
ディレクトリ名として,.は正当な文字です。


>条件は、
>ファイル名の前には必ず「/」があり、
>ファイル名には拡張子「.txt」が付加されています。

基本的にはTDaさんの書いているとおりでできると思います。
ただ,どの程度汎用に作るかによって動作は異なります。
#QueryとかFragmentとかに.txtが含まれるかもしれないから。