Konsolenausgabe



  • ervo schrieb:

    [...]

    if ( (fp = fopen( INPUT_FILE, "r")) == NULL ){
    fprintf( stderr, "Fehler beim Öffnen der Datei %s", INPUT_FILE);

    char * Cwd;
    getcwd( Cwd, BUFFER_SIZE );

    [...]

    [/code]

    Erstens benutzt Du hier nicht reines C, sondern Möglichkeiten, die nur C++ bietet.
    Zweitens liest Du in einen Bereich ein, in dem Du gar keinen Speicher reserviert hast. Änder das mal in:

    char * Cwd [BUFFER_SIZE];

    Drittens solltest Du evtl. den Returnwert von getcwd auf NULL (Fehler) prüfen.



  • Belli schrieb:

    Erstens benutzt Du hier nicht reines C, sondern Möglichkeiten, die nur C++ bietet.

    C99? 🙂

    char * Cwd [BUFFER_SIZE];

    Da ist noch das Sternchen zuviel.



  • Schei ... Sternchen, lol ...

    btw. wußte ich nicht, daß C99 es erlaubt, Variablen mitten in einem Block zu definieren, also nehme ich das mal zurück, war ja eh unwichtig und nur so nebenbei bemerkt ...



  • char Cwd[BUFFER_SIZE]; ist die Lösung

    Danke für die Hilfe



  • ervo schrieb:

    BTW: Ich habe die Puffergröße jetzt starr auf 256 gesetz und mal irgendwo eine Konstante MAX_PATH gesehen, die auf meinem System nicht gefunden wird. Wie mach ich das richtig?

    Ist ne m$ Konstante.



  • m$ schrieb:

    ervo schrieb:

    BTW: Ich habe die Puffergröße jetzt starr auf 256 gesetz und mal irgendwo eine Konstante MAX_PATH gesehen, die auf meinem System nicht gefunden wird. Wie mach ich das richtig?

    Ist ne m$ Konstante.

    Ist definiert in der WIN-API in windef.h



  • Heisst das der Länge des Pfades sind hier keine Grenzen gesetzt? (Ich arbeite unter Linux/Ubuntu) Ich muss die Länge des Strings ja doch begrenzen. Wie groß wähle ich hier den Wert?



  • MAX_PATH ?



  • ervo schrieb:

    Heisst das der Länge des Pfades sind hier keine Grenzen gesetzt? (Ich arbeite unter Linux/Ubuntu) Ich muss die Länge des Strings ja doch begrenzen. Wie groß wähle ich hier den Wert?

    Naja, so groß, wie ein Pfad auf Deinem System sein kann, würde evtl. Sinn machen.



  • Heisst das der Länge des Pfades sind hier keine Grenzen gesetzt? (Ich arbeite unter Linux/Ubuntu) Ich muss die Länge des Strings ja doch begrenzen. Wie groß wähle ich hier den Wert?

    Da wirds dann hart in der GNU-Welt:

    GNU schrieb:

    However, in the GNU system, you do not need to worry about these restrictions; any character except the null character is permitted in a file name string, and there are no limits on the length of file name strings.

    Praktisch ist das also eine schwierige Sache: du musst davon ausgehen, dass der Name sehr lang wird, und trotzdem brauchst du ihn für die Bibliothek in einem zusammenhängenden Speicherbereich. Trotzdem sollte der Speicher die Grenzen setzen und nicht hart-kodierte Zahlen.

    Du kannst jetzt einfach eine große Zahl (1024 oder so) als Grenze nehmen, riskierst damit aber Pufferüberläufe. Andernfalls könntest du dafür sorgen, dass ein größerer Puffer verwendet wird, wenn der ursprüngliche zu klein wird.


Anmelden zum Antworten