Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » scandir und wildcards

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.07.2004, 22:38 Uhr
~youssef
Gast


hallo,
ich habe eine c++ funktion für linux mit hilfe der funktion scandir geschrieben, die die einträge ienes verzeichnis ermittelt. nun habe ich festgestellt dass scandir keine wildcards in den pfade unterstützt wie zb *.* oder *.c .
kennt jemand einen typ wie mann diese wildcards bearbeiten kann.
ich könnte jetzt nur die *.* bearbeiten aber es gibt noch viele andere, es fällt mir schwer jetzt alle mögliche wildcards zu beachten.


C++:
//scandir unterstützt keine wildcards wie zb *.*

// prüfen ob der pfad *.* enthält
strcpy(mein_pfad,path_name);
wildcards = strstr(mein_pfad,"*");

if(wildcards != NULL)
{
printf("pfad enthält eine wildcard\n");

token1 = strtok(mein_pfad,wildcards);
strcpy(mein_pfad,token1);
/*printf("pfad mit wildcard = %s\n",path_name);
printf("pfad ohne wildcard: %s\n",mein_pfad);*/

}



hat jemand einen typ oder idee.

danke
youssed


Bearbeitung von Pablo:

CPP Tags gesetzt. Bitte nächstes Mal selber machen


Dieser Post wurde am 31.07.2004 um 08:20 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.07.2004, 23:31 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Probier folgendes (aus der Standard C Library):

C++:
#include <fnmatch.h>

int main(void)
{
  if(fnmatch("*.c","test.c",FNM_FILE_NAME))
    puts("nein");
  else
    puts("ja");

  return 0;
}



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.07.2004, 23:40 Uhr
virtual
Sexiest Bit alive
(Operator)


Nope:
fnmatch is POSIX, nicht ANSI und damit nicht Standard.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.07.2004, 10:14 Uhr
mike
Pinguinhüpfer
(Operator)


Ganz übersehen
Dann müsste es imho so aussehen

C++:
#define _POSIX_SOURCE
#include <fnmatch.h>

int main(void)
{
  if(fnmatch("*.c","test.c",FNM_PATHNAME))
    puts("nein");
  else
    puts("ja");

  return 0;
}


Eines ist aber interessant: Wenn ich mit
gcc -o test test3.c -D_POSIX_SOURCE
kompiliere, kennt er FNM_FILE_NAME aufeinmal nicht mehr :-(
--

Dieser Post wurde am 31.07.2004 um 10:14 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.08.2004, 10:12 Uhr
virtual
Sexiest Bit alive
(Operator)


Tja, ist ja auch nicht nur POSIX, sondern sogar POSIX 2.
Also:

Code:
gcc ... -D_POSIX_C_SOURCE=2 ...


Ist aber letztlich eine akademische Diskussion: ich wollte nur drauf hinweisen, daß das kein ANSI ist und somit nicht überall verfügbar (scandir bekannterweise natürlich auch nicht).
Wenn Es dein compiler ohne zusätzliches Define frisst, ist das erstmal okay.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: