2012-01-20 12 views
0

いくつかの詳細ファイルの拡張子を抽出

  • 言語:C
  • システム:Linux;コマンドライン(ターミナル)と協力し、 ファイルがCを持つ端末
  • ユーザーエクスペリエンスを介して読み込まれます:3 ヶ月

I「は、例えば、特定のファイルの拡張子を抽出するためにはmyfileをしようとしています。 wld "と書かれているので、あとでファイルの内容を処理する前に、正しいタイプのファイルが端末に入力されているかどうかを調べることができます。これは代入に必要です

"strtok"関数を使用して、入力を区切り文字 "。"でセクションに区切りました。

dot=strtok(argv[1], "."); 
filename=dot; 

ファイル名は、現在の入力「MYFILE」の最初の部分で、私の質問は、私は後の第2の部分を取得する方法である「」、アドバイスしてください、そして、それは同じくらい簡単にするために十分に我慢してください。できるだけ私はあなたの返事を利用できるように

おかげ

+0

複数の "。"ファイル名に? – Dmitri

答えて

0

http://www.cplusplus.com/reference/clibrary/cstring/strtok/

を参照してください。基本的に、あなただけのNULLポインタで再びstrtokはを呼び出す必要があります。だから、上記のコードの後に​​

filename = strtok(argv[1], "."); 
fileext = strtok(NULL, "."); 
2
char *extension; 
extension=strtok(NULL, "."); 

まずstrtok()strのようなポインタで呼び出すと、strtok(str, ".")のようになります。
次に、次のトークンにはstrtok(NULL, ".")を呼び出してください。
戻り値がnull(\0)の場合、文字列の最後です。再びパラメータとしてNULLを渡す

0

コールstrtok

extension=strtok(NULL,".") 

strtokへの最初の呼び出しでは、トークン化したい文字列を指している必要があります。最初の呼び出しで渡された文字列全体を処理するまで、strtokはトークンを返します。

0

ファイル名に複数の "。"が含まれる可能性があります。foo。例えばbar.buz。あなたのコードを使用すると、FOObar.buz代わりに、期待通りにつぶやく foo.bar のとを取得します。正しい方法は次のようなものを使用することです:

char *filename = argv[1]; 
char *ext = strrchr(argv[1], '.'); 
if (ext) { 
    *ext = '\0'; 
    ext++; 
}