IF Abfrage, wenn Datei bereits vorhanden.



  • Hallo!

    Ich habe das Problem, dass ich feststellen möchte ob eine Datei schon vorhanden ist, damit fopen diese nicht einfach überschreibt, falls noch mal die gleiche Datei angegeben wird.

    Nach diesem Muster:

    if (datei == NULL)
    	{
    		printf("\n\nKonnte Zieldatei nicht erzeugen!\n\n");
    		return EXIT_FAILURE;
    	}
    

    Bedeutet NULL, dass ein Fehler beim erzeugen dieser Datei aufgetreten ist. Gibt es was vergleichbares mit NULL, was aber anzeigt, dass eine Datei schon vorhanden ist, d.h. ich stelle mir so was vor:

    if (datei == *passendes argument - datei ist schon vorhanden*)
    	{	
    		printf ("Die Datei existiert bereits. Soll sie ueberschrieben werden? (j/n): ");
    		scanf("%c", &ueberschr);
    ... und so weiter....
    

    Vielen Dank im schon mal für eure Antworten! 🙂



  • file = open("filename", O_CREAT|O_EXCL);
    if (file == -1)
    {
    	if (errno == EEXIST)
    	{
    		// datei existiert
    	}
    }
    

    unter windows dürften die open flags _O_CREAT und _O_EXCL sein



  • Du könntest es ja mit fopen machen halt nur mit der option r ... dann legt er nich an oder überschreibt irgend was ... also nur zum lesen öffnen quasi.

    fp = fopen(datei,"r"); //Öffne Datei mit leserechten 
    if(filepointer == NULL)
    {
    fprintf(stderr, "Konnte %s nicht öffnen\n",datei);
    exit(0);
    }
    

    Wäre zumindest ne idee 🙂



  • CurdledMilk schrieb:

    Du könntest es ja mit fopen machen halt nur mit der option r

    gibt aber auch null zurück, wenn man keinen lesezugriff hat und ein darauffolgendes anlegen der datei würde trotzdem scheitern. am besten man nehme was systemspezifisches, z.b. unter windoofs: FindFirstFile(...)
    🙂



  • int _stat( const char *path, struct _stat *buffer );


Anmelden zum Antworten