C言語で同一ディレクトリから複数のファイルを順番に読み込んでいきたいのですが、うまくいきません。
シェルで、ファイル名の取得を行っていっています。
shell
----
ls /home/data > /home/src/infile.txt
----
C
-----------------------------
FILE *fp;
char y[30]="/home/data/";
// ↓aには上記シェルにて取得した1件目のファイル名が入っています。
strcat(y,a);
// ↓ここでは絶対パスが正しく表示されます
printf("ddd:%s\n",y);
// ddd:/home/data/11.txt
// ↓ここでfile open errorで一件目で終了してしまいます。
if ((fp = fopen(y,"r")) == NULL){
printf("file open error!!\n");
exit(1);
}
-----------------------------
このようなファイルの読込みのやり方ができるのか教えてください。
もしできるのであるのなら、そのやり方も教えてください。
わかりにくい文章ですが、お願いします。
No.6
- 回答日時:
こんにちわ。
shell の出力結果をC から拾うよりも、
opendir()/readdir() 等を使った方が楽ですょ。
その方が、移植性も高いし・・・。
参考URL:http://h30097.www3.hp.com/docs/i18n/japan/Single …
回答ありがとうございます。
別の方法でとりあえずは動きました。
opendirの使い方は後日勉強して挑戦してみたいと思います。
ありがとうございました。
No.4
- 回答日時:
「/home/data/11.txt」ですか、「home/data/11.txt」ですか?先頭にスラッシュがあるのとないのとでは、全然違うディレクトリをさしますよ?
#レス不要
if ((fp = fopen("home/data/11.txt","r")) == NULL)
---------
正しく内容が取得できるので、アクセス権に関しては問題ないと思います。
=======================
char y[30]="/home/data/";
strcat(y,a);
printf("ddd:%s\n",y);
// ddd:/home/data/11.txt
No.1ベストアンサー
- 回答日時:
こんにちは。
まず、aliasと打って、lsコマンドに余分な別名が付いていないか確認してください。付いている場合、\lsとして、aliasをパスします。"alias ls 'ls -F'"などとしてあると、*などの余分な文字がくっつきます。また、厳密には"\ls -1 >"とします。-1は、1カラムで表示するというオプションです。
次にyの配列数ですが、PATH_MAXという定数がありますので、こちらを使用してください。
それから数件表示/オープンするのであれば、strcatでyに連結すると、次のデータはどうなると思いますか?
オープンが失敗する理由ですが、viコマンドでそのファイルをオープンできますか?つまり、実行ユーザにリードのアクセス権がありますか?また、デバッガで止めて、確実に目的のファイルを指していることを確認してください。
最後に、「プログラミング言語C」第2版はお持ちでないですか?
http://www.pro.or.jp/~fuji/computerbooks/c/c.ker …
お持ちでないなら、本屋に急行してください。C言語を作った人によるC言語の本で、「Cのバイブル」、「KR本」とも言われるものです。この中に、外部コマンドからファイル名をもらわなくても、ディレクトリの内容を再帰的に表示するプログラムの例があります。
すばやい回答ありがとうございます。
C言語は一昨日より始めたばかりなので質問しました。
aliasについては問題なさそうです。
PATH_MAXの方は現在調べています。
オープン失敗の事ですが、プログラムで直接パスを送ると
---------
if ((fp = fopen("home/data/11.txt","r")) == NULL)
---------
正しく内容が取得できるので、アクセス権に関しては問題ないと思います。
C言語の本は今日買いに走ろうと思ってます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
インクリメント演算子のみを用...
-
右ビットシフト
-
Windows formアプリで データグ...
-
Linux Cプログラミングを学ぶた...
-
プログラミングについて。 1つ...
-
Stuck
-
Notepad++の関数リスト表示でC...
-
Linuxでの開発環境構築や設定の...
-
[C言語]fputsとfprintfの違い
-
Notepad++の関数リスト表示の変...
-
システムエンジニアの適正について
-
どちのほうがすきですか?
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 配列と関数の練習問題
-
こんなことてしますか??
-
C++6.0でのresource.hについて
-
c言語
-
MACで動く実行ファイルをWindow...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列と関数の練習問題
-
システムエンジニアの適正について
-
[C言語]fputsとfprintfの違い
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
どちのほうがすきですか?
-
ArduinoのジャイロモジュールMP...
-
大量のデータを読み込んで表示...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
-
こんなことてしますか??
-
C言語の関数と配列に関する質問
-
Linuxでの開発環境構築や設定の...
-
質問失礼します。 プログラム言...
-
MACで動く実行ファイルをWindow...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
卒業研究でよく分からないとこ...
-
gcc13.2のバグ?
おすすめ情報