проблема со списком файлов каталога - PullRequest
0 голосов
/ 19 ноября 2010

Когда я перечисляю файлы по следующему коду:

/*
 * This program displays the names of all files in the current directory.
 */

#include <dirent.h> 
#include <stdio.h> 

int main(void)
{
  DIR           *d;
  struct dirent *dir;
  d = opendir(".");
  if (d)
  {
    while ((dir = readdir(d)) != NULL)
    {
      printf("%s\n", dir->d_name);
    }

    closedir(d);
  }

  return(0);
}

, файлы выглядят так:

1. client.c
2. deneme.c
3. server.c
4. chat.h~
5. .
6. makefile~
7. udpClient.c~
8. ..
9. udpServer.cpp~
10. client
11. chat.h
12. udpServer.c~
13. server
14. makefile
15. deneme.c~

Что такое номер 5. и 8. Если это файл с именем''или же '..'.почему это произошло.В чем проблема?

Ответы [ 3 ]

3 голосов
/ 19 ноября 2010

Каждый каталог в файловой системе POSIX содержит запись ., которая является ссылкой на себя, и .., которая является ссылкой на его родительский каталог.(Корневой каталог является собственным родителем).

1 голос
/ 19 ноября 2010

'' и '..' - это два каталога, которые всегда присутствуют, это не ошибка.

На самом деле, если на bash пишешь

cd .

или

cd ..

отлично работает.

0 голосов
/ 20 ноября 2011

В каждом списке каталогов вы должны сделать,

"."всегда будет отображаться первым, это текущий каталог, каталог, в котором вы находились после того, как вы сделали "opendir ()" из "."

".." всегда будет отображаться вторым, это предыдущий каталог,один, к которому вы присоединились к вашему текущему каталогу,

под "..", все остальное, что появляется, будет каталогами или файлами, которые вы создали или которые уже присутствовали в текущем каталоге ".", в этомслучай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...