Funktion zur Prüfung Dateiexistenz liefert immer den gleichen (falschen) Rückgabewert



  • Ich habe das folgende Programm geschrieben.
    Dabei soll ein Dateiname als Kommandozeilenargument übernommen werden und dann durch eine Funktion die Existenz der Datei geprüft werden.

    Das Problem ist dabei, dass die Funktion filecheck immer den Rückgabewert 0 liefert, egal ob die Datei existiert oder nicht.
    Danke im Voraus für die Hilfe.

    # include <stdio.h>
    # include <stdlib.h>
    
    int filecheck(char *);
    
    int main (int argc, char *argv[]){
    
    /*Check Arguments*/
    
    switch(argc)    {
    
            /*Too few arguments.*/
            case 1: printf("\n Too few arguments !! Programm exits.)\n");
                    exit(1);
    
            /*Right number of arguments*/
            case 2:
            break;
    
            /*Too many arguments.*/
            default:
                    printf("\nToo many Arguments!! Only programmname and file.\n");
                    exit(1);
                    }
    
    if (filecheck(argv[1])){
    
            printf("\nThe file does exist.\n");
            exit(0);}
    
    else{
    
            printf("\nThe file does not exist.\n");
            exit(1);}
    }
    
    /*Simple funtion to test if a given file exists.
    Returns a truth vale, 1 if file exists,
    0 if it does not.*/
    
    int filecheck(char* filename){
    
    FILE *data_ptr;
    
    if ((data_ptr=fopen("filename","r")) == NULL)
            return (0);
    
    else
            fclose(data_ptr);
            return (1);
    }
    


  • du hast den variablennamen bei fopen versehentlich in anführungszeichen gesetzt 😉



  • Roger Wilco schrieb:

    du hast den variablennamen bei fopen versehentlich in anführungszeichen gesetzt 😉

    Kleine Ursache, große Wirkung. Das Programm funktioniert nun wie beabsichtigt.
    Vielen Dank für die schnelle Antwort. 🙂



  • Aber nicht vergessen, daß das Programm nur prüft, ob man die Datei lesen kann/darf/whatever. Auf Existenz prüfen geht mit ANSI-Mitteln afaik nicht.



  • verwirr Kubus nicht mit irgendwelchem quatschigem Gelaber, was in der Realität so gut wie nie irgendeine Relevanz haben wird, du elender Schlaumeier 🙄


Anmelden zum Antworten