C言語でカレントディレクトリを変更するにはchdir()を使用します。
chdir()
chdir()を用いることで、現在のディレクトリからにnext_path_nameに格納されているディレクトリに移動します。
用途としては実行プログラム以外のディレクトリにあるデータにアクセスするためにカレントディレクトリの変更を行うなどがあります。
書式 | int *chdir(const char *next_path_name) |
引数 | 移動したいディレクトリ名 |
戻り値 | 0 or -1(ディレクトリが存在しない場合) |
ヘッダファイル名 | unistd.h |
【プログラム例】
例1
このプログラムはカレントディレクトリをDATA_DIRに変更しています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <stdio.h> #include <unistd.h> #define DATA_DIR "D:\\study\\CloudStation\\Blog\\Program\\python\\test_program" #define PATH_SIZE 512 int main() { char path_name[PATH_SIZE]; getcwd(path_name, PATH_SIZE); printf("before current dir : %s\n", path_name); chdir(DATA_DIR); getcwd(path_name, PATH_SIZE); printf("after current dir : %s\n", path_name); return 0; } |
例2
このプログラムは例1のプログラムを変更し、DATA_DIRが存在していない場合、「error」を出力しプログラムを終了するようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <stdio.h> #include <unistd.h> #define DATA_DIR "D:\\study\\CloudStation\\Blog\\Program\\python\\sonzaishinai" #define PATH_SIZE 512 int main() { char path_name[PATH_SIZE]; getcwd(path_name, PATH_SIZE); printf("before current dir : %s\n", path_name); // ディレクトリがなかった場合はerrorを出力し、プログラムを終了 if (chdir(DATA_DIR) == -1){ printf("error\n"); return -1; } getcwd(path_name, PATH_SIZE); printf("after current dir : %s\n", path_name); return 0; } |
例1、例2ともにgetcwd()によってカレントディレクトリを取得していますが、getcwd()については以下の記事を参照してください。
現役エンジニアから学ぶならテックアカデミー【実行結果】
結果例1
プログラム例1を実行し、カレントディレクトリを変更しています。
実行結果より、カレントディレクトリが変更できていることが分かります。
結果例2
プログラム例2を実行し、存在しないディレクトリに移動しようとしたため「error」が出力されています。
おすすめ書籍
ポチップ
ポチップ
コメント