Problem mit "fopen".
-
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