1

ファイル システムの操作に疑問を感じました。プログラムを実行する別のディレクトリでファイルを開きます。

次のディレクトリでプログラムを実行するとします: /home/example で、プログラムを別のディレクトリ、たとえば home/example/Inside/Test に移動し、この最後のディレクトリにあるすべての txt ファイルを開きます。

わかりましたので、小さなコード:

  /*variables*/
  struct dirent *strdir;
  DIR *diro; 
  struct stat statbuffer;
  char *path = /home/example/Inside/test

  diro = opendir( path )
  /*cheked it opened properly*/
  while ( (strdir = readdir(diro)) != NULL ){
     stat(strdir->d_name, &statbuffer);         /*Gets information of file*/
     if (S_ISREG(statbuffer.st_mode)){
       /*its regular type*/
       /*check its of type txt*/
       ???

fopenを使っていたので載せまし???たが、うまくいきません。もちろん、そのファイルは /home/example に存在しないため、そうではありません。オープンも同様です。

したがって、ディレクトリとファイル名を単一の文字に連結してフルパスを取得できるかもしれませんが、それはちょっと醜いように聞こえます...

もう 1 つのアイデアは、stat によって提供された情報を使用することですが、それを機能させる方法がわかりません。ハードリンク?

4

2 に答える 2

0

パスにディレクトリ名を付けたくない場合 (これはおそらく正しいことです)、次のように呼び出します。chdir("/home/example/Inside/Test");

于 2012-06-15T00:55:13.593 に答える
0

この関数に指定するパラメータは文字列である必要があるようです。

    opendir( /home/example/Inside/Test )

このSOの質問を参照Cを使用してディレクトリを開く

于 2012-06-15T00:53:45.997 に答える