C言語でプログラムと同じディレクトリにないファイルを読み込みたいと思っていますが、どうすればよいかが思いつきません。
fopenは使わない(使えない拡張子?)方針です。
今現在、プログラムは読み込みたいプログラムとファイルを同じファイルにおいて実行すれば読み込みますが、本来読み込みたいファイルは共有のサーバーの中にあり、さらに膨大な量のデータのためプログラムや読み込みたいファイルを動かすことはあまり適切ではありません。
そこでincludeのようにbash_profileをいじることでできるようになるのでは?と考えましたが調べてみてもわかりません。
詳しい方どうぞ教えてくださると助かります。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
そのプログラムがあるディレクトリ(もしくは、そのプログラムを起動するときのディレクトリ)へ読み込ませたいファイルのシンボリックリンクを作成するのでは、どうでしょう。
No.3
- 回答日時:
そうなると、その「特殊な外部ライブラリ」とやらの内容がわからないことには、どうしようもありません。
マニュアルとか仕様書とかサポートとか制作者とかで確認してください。
その「特殊な外部ライブラリ」はどうやって対象のファイルを決めているのでしょうか?
「カレントディレクトリにある該当拡張子を自動で取得」
ってことだと、それに従うしかありませんし。
・別途にfopenで開いたFILE * を「特殊な外部ライブラリ」に渡している
といった、ファイル名では指定していないけど、対象ファイルについての情報はわたしている、ということもあります。
No.2
- 回答日時:
補足読んでもいまいち不明なんですが…。
特殊なライブラリとやらがファイル名固定で扱っているんですかね?
>本来読み込みたいファイルは共有のサーバーの中にあり、さらに膨大な量のデータのためプログラムや読み込みたいファイルを動かすことはあまり適切ではありません。
nfsなりでマウントしてカレントディレクトリをマウントしたディレクトリに移動させる…とかはダメなんですか?
No.1
- 回答日時:
> includeのようにbash_profileをいじることでできるようになるのでは
等と書いてあるので、 Unix や Linux での話として進めます
Windowsでも同様なのですが、コマンド等が若干違います。
その共有ファイルに
ls /共有フォルダ/〜/〜/ファイル
等としてアクセスできるのなら、C言語からも同様に、ディレクトリを含めた絶対パスや相対パスで指定すれば、アクセスできます。
ファイル名だけ指定すると、カレントディレクトリ(作業ディレクトリ等とも)のファイルにアクセスします。
現在はたまたま、実行ファイルのあるディレクトリがカレントディレクトリになっているので「読み込みたいプログラムとファイルを同じファイルにおいて実行すれば読み込」めるように見えるだけです。
cdでディレクトリを移動して、その実行ファイルを(パス付きで指定して)実行すると、その「読み込みたいプログラムとファイルを同じファイル」が読めなくなります。
その代り、移動したディレクトリにあるファイルが読めるようになります。
> includeのようにbash_profileをいじることでできるようになるのでは
これは、Cコンパイラが 環境変数 の内容を解析して、
ソースに #include <XXX.h> とあったら
fp = fopen("/usr/local/include/XXX.h","r") ;
if (fp==NULL) { fp = fopen("/opt/local/include/XXX.h","r") ; }
if (fp==NULL) { fp = fopen("/usr/include/XXX.h","r") ; }
...
みたいな感じに順番にアクセスするように作られているからです。
fopen自体には、そんな「環境変数に書いてある場所から探す」等という機能はありません。
> fopenは使わない(使えない拡張子?)方針です
使わないのは自由ですが、拡張子によって「使えない」ことはありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- C言語・C++・C# C言語について教えて欲しいです。 ファイルの中身をコピーするプログラムを作ってます aというファイル 7 2022/11/03 19:21
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
windows.hがincludeされない
-
FTPでputすると空ファイルが出...
-
ExcelVBAでカレントディレクト...
-
ShellExecute、エクスプローラ...
-
ファイルダイアログのカレント...
-
C言語を用いたファイルの一括削...
-
AfxLoadLibrary関数で、DLLのハ...
-
ファイルやディレクトリの存在...
-
エクセルVBAで相対パスでファイ...
-
fopenで別ディレクトリにファイ...
-
GetPrivateProfileStringでini...
-
パーミッションの 読み取り、書...
-
マイクラでPythonのプログラミ...
-
ファイルのパスを動的に取得
-
セルに入力されたパスでフォル...
-
圧縮(Zip)について
-
プログラミング ファイル処理...
-
ユーザにディレクトリを選択さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
FTPでputすると空ファイルが出...
-
ExcelVBAでカレントディレクト...
-
windows.hがincludeされない
-
GetPrivateProfileStringでini...
-
マイクラでPythonのプログラミ...
-
fopenで別ディレクトリにファイ...
-
「UNCパスはサポートされません...
-
ファイルやディレクトリの存在...
-
ExcelVBA サーバーの(共有フォ...
-
C言語を用いたファイルの一括削...
-
ファイルダイアログのカレント...
-
ネットワーク上のコンピュータ...
-
セルに入力されたパスでフォル...
-
webアプリケーションでの画像フ...
-
エクセルVBAで相対パスでファイ...
-
絶対パスの絶対て英語で何でし...
-
VBでフォルダ単位のFTP
-
EXCELでダイアログボックスを開...
おすすめ情報
kmeeさま
丁寧な説明ありがとうございます。
fopenを使わないというのは、その拡張子を特殊な外部ライブラリを使って開くようになっているので、fopenのような関数ではなく別の関数を使っているのです。
その関数を見てもファイルを指定する様子がなかったので、bash_profileをいじればそういうこともできるのでは?と思い詳しい方に聞こうと思った次第です。