Datei mit umbennen wenn Sonderzeichen
-
Original erstellt von uwemd:
das mit den verzeich nis einlesen klapt schon... aber wie bekomme ich jetzt die sonder zeichen ersezt?Die Funktion strpbrk ist dein Freund. In etwa sollte das so aussehen:
char *p; while (p = strpbrk(dateiname, ";:?/\=")) *p = '_';
-
hi..
aber er bennet doch dann die datei nicht um...!
-
Richtig, das geht mit rename.
-
hi..
also wenn ich das richtitg verstanden habe mich ich es so:
while((dirzeiger=readdir(dir)) != NULL) { //" (*dirzeiger).d_name <- Hier steht ja der Dateiname drin char *p; while (p = strpbrk(",(*dirzeiger).d_name, ";:?/\=")) *p = '_'; rename((*dirzeiger).d_name, p); }
aber er macht nichts... vielleicht kannst du mir diese funktion als beispiel geben...
mfg uwe
-
Einen 'ausreichend großen' Zwischenpuffer anlegen und den Namen dort hinenkopieren. Die von mir angegebene Prozedur auf den Puffer anwenden und schließlich den alten Dateinamen und den neuen als Parameter von rename benutzen.
-
hi...
ich habe so gut wie nichts verstanden...
mfg uwe
-
#include <stdio.h> #include <limits.h> void chname(char const *file) { char buf[NAME_MAX]; char *p = buf; char const *q = file; while (*q) { if (strchr(";:_§$%", *q)) *p = '_'; else *p = *q; ++q; ++p; } *p = '\0'; rename(file, buf); }
-
hallo...
also das beispiel verstehe ich nicht.
vielleicht koenntest du das mal an hand von meinem beispiel zeigen also wie ich das verzeichniss auslese..
danke uwe
-
/* chname() - wie von Daniel E. vorgeschlagen */ /* ... */ while ((dirzeiger = readdir(dir)) != NULL) { chname(dirzeiger->d_name); } /* ... */
-
hallo....
dank an euch allen...
es funzt jetzt...
mfg uwe