Datei existiert ??
-
hallo ...
ich habe ma ne frage, gibt es eine funktion mit der ich überprüfen kann ob eine datei existiert oder nicht.
aba ohne sie zu öfnen und dann zu gugen ob sie offne is !??
bin für jeden tipp dankbar
-
#include <stdio.h> #include <string.h> #define MAX 256 int check_file(char *data) /* Funktion zum kontrollieren ob datei existiert */ { FILE *datei; datei=fopen(data,"r"); if(datei == NULL) perror("Reason"); else printf("Datei existiert\n"); fclose(datei); return 0; } void chomp(char *data) /* Funktion zum entfernen des \n(newline-)zeichens */ { size_t len; len = strlen(data); data[len-1]='\0'; } int main() { char buf[MAX]; printf("Welche Datei kontrollieren: "); fgets(buf,MAX,stdin); chomp(buf); check_file(buf); return 0; }
Damit sollte es funktionieren.
Es wird in der Main gefragt welche Datei er einlesen soll
(kannst du natuerlich auch per Kommandozeilen-Argumente machen)
und entfernt das "\n" Zeichen aus diesem String.
Danach wird per "check_file(buf)" kontrolliert ob diese datei existiert,
wenn nicht wird eine Fehlermeldung mit Grund ausgegeben.MfG Fallen Angel
Edit: size_t steht fuer unsigned int
-
hey coool danke ...
sowas also geht es doch über das dateiöffnen ... !
ich danke dir für die mühe und das du dich extra regestriert hast
thx .. da EXBS
-
fclose(datei); wird dir bei Nichtvorhandensein der Datei nen Segfault an den Kopf werfen.
The fclose() function does not handle NULL arguments; they will result in a segmentation violation.
Von daher besser nur fclose verwenden, wenn datei != NULL ist.
-
Und chomp() löscht grundsätzlich das letzte Zeichen vor der \0
Besser wäre (imho) sowas in der Art
// Terminiert string beim ersten '\n' void chomp(char *data){ if( (data = strchr(data, '\n')) ){ *data = '\0'; } }
-
sicher kann man sich damit das letze zeichen ueberschreiben,
aber wenn ich ein programm schreibe dann weiss ich auch wieso ich dieses
einsetze und wann ich es tuebtw:
Und chomp() löscht grundsätzlich das letzte Zeichen vor der \0
genau das soll die funktion ja uach machen, das newline zeichen killen
-
Weiss das auch der Benutzer des Programms der 255 Zeichen eintippt und dann Enter drückt?
-
TactX schrieb:
Weiss das auch der Benutzer des Programms der 255 Zeichen eintippt und dann Enter drückt?
ok, stimmt.
werd's mir merken