C LANGUAGE TECHNOLOGY

【C言語】ディレクトリの操作関数【作成,削除,オープン,読み込み,クローズ】

悩んでいる人

C言語でディレクトリの操作関数を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

ディレクトリの操作関数

ディレクトリの操作関数を紹介します.

具体的には,LinuxのGCC/Clangで以下の関数の使い方を解説します.

  • mkdir関数
  • rmdir関数
  • opendir/readdir/closedir関数
  • scandir関数

※Visual Studioではコンパイルできないので注意して下さい.

mkdir関数でディレクトリの作成

mkdir関数はディレクトリを作成する関数です.

引数pathnameに新しく作成するディレクトリ,引数modeに新しく作成するディレクトリのモード(例:0755)を指定します.

mkdir関数は,成功した場合は0,失敗した場合は-1を返します.

mkdir関数を利用するコードは以下になります.

実行結果は以下になります.

実行前と実行後でtmpディレクトリが作成されていることがわかります.

rmdir関数でディレクトリの削除

rmdir関数は,ディレクトリを削除する関数です.

引数pathnameに削除するディレクトリを指定します.

削除するディレクトリは空でなければなりません.

rmdir関数は,成功した場合は0,失敗した場合は-1を返します.

rmdir関数のコードは以下になります.

実行結果は以下になります.

tmpディレクトリが正常に削除されていることがわかります.

opendir/readdir/closedir関数でディレクトリのオープン,読み込み,クローズ

opendir関数は,引数nameで指定したディレクトリストリームをオープンし,そのストリームへのポインタを返します.

readdir関数は,dirpが指すディレクトリストリームの中で,次のディレクトリエントリを表すdirent構造体へのポインタを返します.

closedir関数は,dirpに関連付けられたディレクトリストリームをクローズします.

close関数は,成功した場合は0,失敗した場合は-1を返します.

opendir/readdir/closedir関数のコードは以下になります.

私のディレクトリでの実行結果は以下になります.

あなたのディレクトリでどのような結果になるか確かめてみましょう.

scandir関数でディレクトリのオープン,読み込み,クローズ

scandir関数は,ディレクトリdirpをスキャンします.

ディレクトリの各エントリを引数としてfilter関数を呼び出します.

filter関数が0以外の値を返すエントリは,malloc関数により確保された文字列に格納され,比較関数comparを利用したqsort関数によりソートされて,malloc関数により確保された配列namelistにまとめられます.

filterがNULLの場合,すべてのエントリが選択されます.

比較関数comparにはalphasort関数とversionsort関数を利用できます.

alphasort関数はstrcoll関数を用いてディレクトリエントリをソートします.

versionsort関数は文字列(a)->d_nameと(b)->d_nameに対してstrverscmp関数を利用します.

opendir/readdir/closedir関数と比較して,scandir関数はfilter関数や比較関数comparを利用してディレクトリのスキャン方法をカスタマイズできることが大きなメリットです.

scandir関数のコードは以下になります.

私のディレクトリでの実行結果は以下になります.

あなたのディレクトリでどのような結果になるか確かめてみましょう.

まとめ

C言語でディレクトリの操作関数を紹介しました.

具体的には,以下の関数の使い方を解説しました.

  • mkdir関数
  • rmdir関数
  • opendir/readdir/closedir関数
  • scandir関数

ファイルの操作関数の使い方を知りたいあなたはこちらからどうぞ.

C言語 fopen関数
【C言語】fopen/open/fopen_s関数の使い方

こういった悩みにお答えします. こういった私から学べます. 目次1 fopen関数1.1 fopen関数でファイルの読み込み1.2 fopen関数でファイルの書き込み2 open関数2.1 open関 ...

続きを見る

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

独学が難しいあなたは,C言語を学べるおすすめのオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!

-C LANGUAGE, TECHNOLOGY
-, , , , ,