Problem mit "fopen".



  • Tatsache jetzt geht das 😕 😕

    Danke DarkYe 🙂



  • @grottenolm

    Jo, danke 🙂

    Und wieder ist man schlauer 🙂



  • arrg...das kommt davon, wenn man sich mitten im verfasssen des Postings 'ne Cola holt... 🙄



  • arrg...das kommt davon, wenn man sich mitten im verfasssen des Postings 'ne Cola holt...

    Eigentlich wars ne Fanta, aber egal 🙂



  • Mhhh, eigentlich meinte ich mich damit... 😉

    mfg grottenolm



  • Asso 🙄

    Nadann mal Guten Durst 🙂



  • Original erstellt von <grottenolm>:
    Der Code erstellt nur einen Datei Deskriptor(ganzzahlige ID), mit dem du auf das entsprechende File zugreifen kannst.

    Nope, der Code füllt eine Variable der Struktur FILE, wo mehr als nur der FD drin steht (EOF/Fehler-Flags, Adresse des Puffers, Pufferzeiger, Puffergröße, Position des Schreib-/Lesezeigers, FD). Bei systemnahen Funktionen wie open() wird nur ein FD zurück gegeben, aber nicht bei den ANSI-C - Funktionen.

    [ Dieser Beitrag wurde am 16.06.2003 um 09:51 Uhr von RTC editiert. ]



  • Es lag mir auf der Zunge 😉
    Aber egal...sorry für die teilweise falsche Information und danke für die Berichtigung... 😃

    mfg grottenolm



  • vielleicht keine zugriffrechte drauf auf die file?! soweit ich weiss hat er dann auch NULL zurückgegeben. ich such grad mal meinen code...

    ..gefunden! Also das ist meine source aus dem ersten semester, als ich ein programm schreiben sollte (unter HP UX), was ne Datei öffnet und auf den Bildschirm ausgibt. Such dir raus, was du brauchst. das prog lief...

    #include <stdio.h>
    
    int main (int argc, char *argv[])
    {
    
        char file[255], zeichen='\0';                               /*File bezeichnet den Dateinamen, zeichen, das jeweilige Zeichen aus der Datei*/
        static FILE *datei;                                 /*zum Datei öffnen*/
        int  zeilenanzahl=0,zeichenanzahl=-1,leerzeichen=0,bildschirmanzahl=1,status;
    
    /************************************************************************\
    * Wurde das Programm richtig aufgerufen und lässt sich die Datei öffnen? *
    \************************************************************************/
    
            if (argc != 2)                                  /*abfrage, ob richtiger Programmaufruf erfolgt ist*/
            {
                printf ("\nFalscher Programmaufruf!\n");
             printf ("Programm in dr Form ''a10 datei'' aufrufen!\n\n");
                return 1;
            }
    
            if ( ( sscanf(argv[1], "%s", &file) ) == 0)     /*"einlesen" des Dateinamens, von der Shell eingabe her, und abfrage ob das umwandeln in den entspr. dateinamen geklappt hat*/
            {
                printf ("Problem beim umwandeln!\n");
                return 2;
            }
    
            datei = fopen(file, "r+");                      /*datei wird geöffnet*/
    
            if (datei == (FILE *)0)                         /*abfrage ob öffnen geklappt hat*/
            {
                printf ("Fehler beim oeffnen der Datei!\n");
                return 3;
            }
    
            status = fscanf(datei,"%c", &zeichen);
    
    /*****************************\
    * Das eigentliche Programm... *
    \*****************************/
    
            while (status != EOF)                               /*Es werden so lange zeichen aus der Datei gelesen und ausgegeben, bis das dateiende (EOF) erreicht ist*/
            {
    
                    printf ("%c", zeichen);
                    status = fscanf(datei, "%c", &zeichen);                     /*Zeichen einlesen und den variablen "zeichen" und "status" zuweisen*/
    
                    if (zeichen == '\n')                           /*Wenn aktuelles Zeichen ein "Zeilenumbruch" ist --> Zeilenzahl hochzählen*/
                    {
                        zeilenanzahl+=1;
    
                        if (zeilenanzahl % 25==0 )               /*Wenn ein Bildschirm (25 zeilen) voll geschrieben ist --> auf Tastendruck warten und zahl der "Bildschirme" hochzählen*/
                        {
                            getchar();
                            bildschirmanzahl+=1;
                        }
                    }
    
                    if (zeichen == ' ')                         /*Wenn aktuelles Zeichen ein Leerzeichen ist --> als Leerzeichen zählen*/
                    {
                  leerzeichen+=1;
                }
    
                    zeichenanzahl+=1;                       /*Zeichenanzahl hochzählen, egal, welches Zeichen*/
    
            }
    
            printf("\n\nZeichen (ohne Leerzeichen): %d", zeichenanzahl-leerzeichen-zeilenanzahl);
          printf("\n\nZeichen (mit Leerzeichen): %d", zeichenanzahl-zeilenanzahl);
            printf("\n\nZeilen: %d\n\n", zeilenanzahl);
    
            fclose (datei);                                      /*die datei wird wieder geschlossen*/
        return 0;
    }
    


  • Jo danke CyberTim 🙂


Anmelden zum Antworten