Linuxでパス文字列からディレクトリ名やファイル名を分割取得するのに、各要素を解析取得するC言語の関数を作ってみたので紹介する。
Linuxではディレクトリ名やファイル名を取得する dirname() や basename() 関数が使えるが、どうも所望の結果が得られなかったり、引数のパス領域が書き換えられたりする。そこで、文字列からファイル名要素を抽出するC言語の関数を作成。
本関数の特徴は、入力した文字列を解析して、各要素の開始ポインタ位置を戻す。又、戻り値でどの要素が存在してるかを知ることができる。入力した文字列は参照のみで非破壊なので、不要なコピー領域をmallocなどで確保しておかなくても必要な要素のみを抽出できる。
下記URLのブログ記事で紹介してしている内容のファイル。
コンパイルする。実行ファイル「sample」が作られる。
$ make
生成したファイルを削除する。
$ make clean
生成した実行ファイルを実行。
$ ./sample /testdir/test.tst
dir=/testdir/, base=test.tst
- 引数で与えた文字列を、ディレクトリ名とベース名に分割して表示。
- カレントディレクトリのファイルを実行するには、「./」を付ける必要がある。
ドキュメント生成。
$ doxygen
結果は「html/」フォルダに出力されてるので、その中の index.html をブラウザで開く。
下記URLのブログ記事でDoxygenについて紹介している。
- https://www.yokoweb.net/2020/06/29/ubuntu-linux-doxygen-install/
- https://www.yokoweb.net/2020/02/18/macos-doxygen-install/
- https://www.yokoweb.net/2020/02/21/msys2-doxygen-install/
- https://www.yokoweb.net/2020/03/01/windows-doxygen-install/
README.md・・・本説明ファイル_parsepath.c・・・関数本体_parsepath.h・・・関数のヘッダsample1.c・・・関数を使ったサンプルC言語ソースMakefile・・・サンプルmakeファイルDoxyfile・・・Doxygenの設定ファイル
- 2020/06/28 新規作成(By T.Yokobayashi)