ここではファイルパスについて説明します。
パスを英語で書くと「Path」であり、「通り道」という意味があります。
ファイルパスとは、そのファイルへたどり着くための通り道を指します。
これまでの例では、「"Test.txt"」や「"Save.txt"」とファイル名だけを書いてきました。
その場合、プロジェクトフォルダの中にファイルが出来ていたことを思い出してください。
さて、新しいプロジェクトを作り、次のプログラムを打ち込んでみます。
<sample program 114-01>
#include <stdio.h> int main(void) { FILE* fp; fp = fopen("Test.txt", "w"); if (fp == NULL) { printf("OPEN ERROR\n"); return 1; } fprintf(fp, "Hello\n"); fclose(fp); return 0; } |
単純に「"Hello"」という文字列をファイルに書き込むプログラムです。
実行すると、プロジェクトフォルダに「Test.txt」が出来上がり、中に「"Hello"」とうい文字列が入ります。
プロジェクトフォルダ↓
「Test.txt」の中身↓
ファイルパスには「カレント(current)」という考え方があり、「今の」とか「現在の」という意味があります。
カレントフォルダとは「現在のフォルダ」という意味であり、fopen関数にファイル名だけを指定するとカレントフォルダのファイルを指すことになります。
※カレントディレクトリと書いてある場合もあります。
つまり、このプログラムではプロジェクトのフォルダがカレントフォルダになっているということです。
では、カレントフォルダに「Data」というフォルダを追加してみましょう。
この中にファイルを保存したい場合、このようにファイルパスを書きます。
<sample program 114-02>
#include <stdio.h>
int main(void)
{
FILE* fp;
fp = fopen("Data\\Test.txt", "w");
if (fp == NULL) {
printf("OPEN ERROR\n");
return 1;
}
fprintf(fp, "Hello\n");
fclose(fp);
return 0;
}
|
ファイル名の前に「Data\\」と付け加えました。
これは、カレントフォルダにある「Dataフォルダ」の中の「Test.txtファイル」という意味になります。
実際に実行してDataフォルダの中を見てください。
カレントフォルダを基準にファイルパスを書くことを「相対パス指定」といいます。
逆に「絶対パス指定」という書き方もあり、こちらはドライブ名から書きます。
例)"C:\\Users\\unknown\\Desktop\\Project05\\Test.txt"
最近のパソコンはユーザーごとに環境が異なるため、私のプログラムでは「絶対パス指定」は使いません。