0

「。」のようなディレクトリを除いたファイルリストを取得しようとしています。と ".."。私はそれを行うために次のコードを使用します:

   DIR *dir;   
   struct dirent *ent;

   dir = opendir(currentDir);

   if (dir != NULL)   
   {
      while ((ent = readdir (dir)) != NULL) 
      {

         if (ent->d_name == "." || ent->d_name == "..")
         {
            continue;
         }
      }
   }

しかし、それは機能しません。

4

4 に答える 4

3

strcmp文字列を比較するために使用する必要があります。これではなく:

if (ent->d_name == ".")

あなたはこれを必要とします:

if (strcmp(ent->d_name, ".") == 0)

コードは、文字列の内容を比較するのではなく、ポインタを直接比較しています。

詳細については、strcmpのドキュメントを参照してください。

于 2012-04-13T09:47:30.577 に答える
1

strcmpを使用して比較を行う必要があります。

于 2012-04-13T09:47:37.223 に答える
0

string はネイティブの c データ型ではありません。string は文字のコレクションとして表されます。したがって、文字列を比較するには、関数ではなく演算子はありません。詳細についてはstrcmp()を参照してください。

于 2012-04-13T09:49:01.077 に答える