読者です 読者をやめる 読者になる 読者になる

g_path_get_dirname()の使用上の注意

C言語プログラミング

GLibにg_path_get_dirnameという、引数として与えたファイルパス(文字列)から親フォルダ部分を抽出して返す、という動きをする関数がある。

例えば、/home/testという文字列を渡すと/homeを返し、testを渡すと.が返ってくるのだが、実はこの関数、パス区切り文字が最後に現れる場所を探してそこ以前の文字列を返しているだけなので、/home/test/みたいなパスの最後が区切り文字になっている文字列を渡すと/home/testのような最後の一文字を削除しただけの文字列が返ってくる。

故に、末尾がパス区切り文字の場合は渡す前に予めヌル文字に変えておくべき、という事にこないだ気付いた。