fopen bleibt hängen



  • moin,

    ich hab n komisches problem mit fopen. und zwar bleibt mein programm beim aufruf der funktion fopen() einfach hängen und läuft nicht weiter. ich hör nur noch, wie der cpu lüfter sich schneller dreht, also volle cpu last.

    FILE* list;
    char buffer=(char*)malloc(sizeof(char));
    list=fopen("123dirlist1234.txt","rt");
    if ((list!=NULL)&&(buffer!=NULL))
    {
      [..]
      fclose(list);
    }
    

    das besondere ist, dass jeder dateiname _einmal_ benutzt werden kann. also beim 2. durchlauf des selben quellcodes hängt er dann wieder. ich wüsste net, woran es liegen kann, da ich ja auch brav fclose gemacht habe 🙂
    insofern muss es doch n prob mit windows xp oder service pack 2 sein. wer weiß, was die da wieder für methoden eingebaut haben 😃



  • Ist ja schön und gut, dass du für buffer Speicher reservierst, aber ich schätze mal, dass du mit nur 1 Byte ( sizeof(char) ) nicht recht weit kommen wirst, besonders wenn sich meine Befürchtung bewahrheitet und du eindeutig mehr als nur 1 Byte in buffer einliest.

    Ergo solltest du wissen, wie viele Zeichen (Byte) du wirklich in buffer einlesen willst und diese Grenze auch beim Einlesen berücksichtigen!



  • auch wenn es sich nicht auf meine frage bezieht. ich brauch nur 1 byte, da ich auch nur 1 byte einlese. 😉



  • BongoM schrieb:

    char buffer=(char*)malloc(sizeof(char));
    

    es ist unsinnig!!!

    du hast ein normales char deklariert und legst jetzt einen Pointer darauf!!

    das kann nicht gehen..
    wenn müsste es so heissen:

    char *buffer=(char*)malloc(1);  //sizeof(char) == 1
    

    da du aber nur 1 zeichen einliest ist es unsinnig, deshalb einen Pointer zu deklarieren. Also besser wäre:

    char buffer;
    

    mfG (c)h



  • bongoM schrieb:

    auch wenn es sich nicht auf meine frage bezieht. ich brauch nur 1 byte, da ich auch nur 1 byte einlese. 😉

    So?? Wie liest du denn das 1 Byte ein?



  • ich brauch nur 1 byte, da ich auch nur 1 byte einlese.

    Wenn du ein Zeichen auslesen willst, lass dich aber daran erinnern, dass in der Datei auf jeden Fall ein \0 ist.



  • BongoM schrieb:

    buffer!=NULL

    😃 😃 😃 ich hoffe doch, dass es dein Computer schafft, dieses eine Byte zu reservieren*ggggggg*

    @derBob:
    warum muss ausgerechnet ein '\0' in der Datei sein? ist ja ne textdatei
    meinst du den EOF?
    ansonsten kann das '\r''\n' wird durch den textmodus ohnehin in ein '\n' verwandelt.
    '\0' kenne ich nur in binärdateien

    auch wäre es für das Programm nicht tötlich, ein Zeichen mit dem ASCII 0 auszugeben.

    mfG (c)h

    PS.: *gg* wie schon gesagt.. auch meine Professoren irren häufig*gg* und es kann leicht sein, dass da einer was falsch, bzw nicht gut genug erklärt hat 😃


Anmelden zum Antworten