Linuxでパス文字列からディレクトリ名やファイル名を分割取得するのに、各要素を解析取得するC言語の関数を作ったので備忘録を残す。
概要
Linuxではディレクトリ名やファイル名を取得する dirname()
や basename()
関数が使えるが、どうも所望の結果が得られなかったり、引数のパス領域が書き換えられたりする。そこで、文字列からファイル名要素を抽出するC言語の関数を作成。
この関数の特徴は、入力した文字列を解析して各要素の開始ポインタ位置を戻す。又、戻り値でどの要素が存在してるかを知ることができる。入力した文字列は参照のみで非破壊なので、不要なコピー領域をmallocなどで確保しておかなくても必要な要素のみを抽出できる。
ソースコード
ソースコード一式を「GitHub」に登録した。
GitHub - jr4qpv/parsepath: パス文字列からディレクトリ名やファイル名を取得
パス文字列からディレクトリ名やファイル名を取得. Contribute to jr4qpv/parsepath development by creating an account on GitHub.
任意フォルダで、下記コマンドで取得できる。
$ git clone https://github.com/jr4qpv/parsepath
テストサンプル実行
$ ./sample
dir=/home/user/, base=test.txt
$ ./sample /aaa/bbb.ccc
dir=/aaa/, base=bbb.ccc
補足
- 本関数は、macOSでも実行可能。
関連記事
パス文字列からディレクトリ名やファイル名を取得 [新石器Wiki]
コメント