[c] readdir() .. und . nicht in der ausgabe anzeigen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
L@w
Beiträge: 916
Registriert: 24.07.2002 08:12:30

[c] readdir() .. und . nicht in der ausgabe anzeigen

Beitrag von L@w » 16.01.2006 11:59:43

hallo,

gibt es die möglichkeit bei der funktion readdir (in c) .. und . bei der ausgabe nicht anzuzeigen?

danke
cu L@w
---

LINUX - because booting is for adding hardware!

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 16.01.2006 14:30:04

hi,

mit "readdir" allein geht das nicht, aber wenn ich dich richtig verstehe, reicht doch eine Zeile:

Code: Alles auswählen

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>


int  main (void)
{
DIR            *verzeichnis;
struct dirent  *eintrag;

  verzeichnis = opendir (".");
  if (verzeichnis == NULL) {
    perror (".");
    exit (1);
  }
  while ((eintrag = readdir (verzeichnis))) {
    if (*eintrag->d_name == '.')  continue;    // die entscheidende Zeile
    printf ("%s\n", eintrag->d_name);
  }
  closedir (verzeichnis);
  return 0;
}
Wenn's wirklich nur die beiden "." und ".." sein sollen, wuerde ich

Code: Alles auswählen

if (strcmp (eintrag->d_name, ".")  == 0)  continue;
if (strcmp (eintrag->d_name, "..") == 0)  continue;
schreiben. Zur Not gibt's auch noch "scandir"; erscheint mir aber als Overkill.
Beware of programmers who carry screwdrivers.

Antworten