fopen...angeben welche Datei geöffnet werden soll.



  • Hallo,

    wie kann ich es machen, dass der Benutzer angeben kann welche datei geöffnet werden soll...

    Ich habe es folgendermassen versucht.

    .....
    FILE *zeiger_datei_klasse;
    char str[101]={0};
    char klasse[8];
    printf("Bitte geben Sie die Bezeichnung der Klasse ein (z.B. ita12)\n");
    scanf("%s", &klasse);
    fflush(stdin);

    zeiger_datei_klasse = fopen(("C:\\ita12\%s.ita", "r"),klasse);
    // So funktioniert es so nicht (s.o.)
    // zeiger_datei_klasse = fopen("C:\\ita12\\ita12.ita", "r");
    // So läuft es, aber das wird ja von mir eingegeben und ist fest...

    while (fgets(str,100,zeiger_datei_klasse) != NULL)
    {
    printf("%s", str);
    }
    .....

    Der Benuzter soll nur den Namen der Datei eingeben, ohne die Dateiendung.

    Gibt es eine Möglichkeit das hinzubekommen?

    Danke für Hilfe
    mfg Darius



  • du uebergibst einfach das char feld als parameter

    char klasse[9];
    char endung[4] = ".txt";
    char klasseKomplett[12];

    fgets( klasse, 8, stdin );
    klasse[8] = '\0';

    /* dateiname und endung zusammenfuegen /
    klasseKomplett[0] = '\0'; /
    notwendig da strcat nach dem '\0' sucht zum anhaehnge*/
    strcat( klasseKomplett, klasse );
    strcat( klasseKomplett, endung );

    fopen( klasseKomplett, "r" );



  • Hey Darius,

    versuchs doch mal so:

    //---------- Nebenfunktion -------------
    int oeffnen(char *pointer_dateiname)
    {
    FILE *datei;

    datei = fopen ( pointer_dateiname, "r");
    if( datei == NULL)
    printf("Error");
    return(0);
    }

    //--------- Hauptfunktion ---------------
    void main()
    {
    char dateiname[255],*pointer_dateiname;

    printf("Bitte geben sie den Namen der auszulesenden Tatei an!(zb. - hallo.txt)");

    scanf("%s",dateiname[255]);

    strcpy(pointer_dateiname, dateiname);
    oeffnen(pointer_dateiname);
    }

    müsste so eigendlich funzen! aber nicht die header-dateien vergessen....... 😉



  • Danke für eure Hilfe
    ich hab das jetzt so gemacht :

    FILE *zeiger_datei_klasse;
    char str[101]={0};
    char pfad[11] = "C:\\ita12\";
    char klasse[5]; // hier gings mit 4 nicht
    char endung[5] = ".ita";
    char klasse_komplett[30]={0};

    printf("Bitte geben Sie die Bezeichnung der Klasse ein (z.B. ita12) - max. 5 Zeichen\n");
    fgets(klasse, 5, stdin);
    klasse[6] = '\0';

    /* Pfad, Dateiname und Endung zusammenfuegen /
    klasse_komplett[0] = '\0'; /
    notwendig da strcat nach dem '\0' sucht zum anhaehnge*/
    strcat( klasse_komplett, pfad );
    strcat( klasse_komplett, klasse );
    strcat( klasse_komplett, endung );

    printf("%s", klasse_komplett);

    zeiger_datei_klasse = fopen(klasse_komplett, "r");
    while (fgets(str,100,zeiger_datei_klasse) != NULL)
    {
    printf("%s", str);
    }

    }

    Ich werde das ganze noch mit Zeigern machen da hier eine Länge vorgegeben wird, da die Datei sonst nicht geöffnet wird....

    @ ita12_simon : Bist du der Simon aus meiner Klasse oder ist das nur Zufall? 😃

    mfg Darius

    [ Dieser Beitrag wurde am 01.12.2002 um 18:06 Uhr von ita12_darius editiert. ]



  • char klasse[5]; // hier gings mit 4 nicht
    [..]
    klasse[6] = '\0';

    kommt dir daran nichts komisch vor??


Anmelden zum Antworten