fscanf erstes Zeichen fehlt...



  • Moin!

    Habe die ganze Nacht durchprogrammiert, und sehe deswegen meinen Fehler vielleicht nicht mehr... Problem: Ich will eine Textdatei zeilenweise einlesen, das funktioniert auch wunderbar, nur das erste Zeichen der ersten Zeile wird beim Einlesen übersprungen.

    Wenn die Testdatei also so aussieht:
    Das ist der Text in Zeile 1
    In Zeile 2 steht auch etwas

    Dann steht nach dem ersten Schleifendurchlauf "as ist der Text in Zeile 1" in cTemp.

    FILE* UserFile	= NULL;
    	UserFile = fopen("user.txt","r");
    	if(UserFile != NULL)
    	{
    		char cTemp[51];
    		while(fgetc(UserFile) != EOF)
    		{
    			fscanf(UserFile,"%s", &cTemp);
                            .....
                    }
            }
    

    Danke und gute Nacht!



  • Bei der ersten Zeile geht das erste Zeichen durch fgetc() verloren. Denn Du liesst das erste Zeichen mit fgetc() ein, speicherst es aber nicht und damit ist es weg. Bei allen weiteren Durchgängen ist das eingelesene Zeichen newline bzw am Ende EOF. Dass die Weg sind fällt nicht auf, beime ersten Zeichen fällts sehr wohl auf.



  • Mach doch folgendes:

    while(0!=fgets(UserFile,buffer) != EOF)
            {
                           .....
            }
    

    Das sollte deine Probleme beheben, inclusive eof handling und ersten character



  • PAD schrieb:

    Mach doch folgendes:

    while(0!=fgets(UserFile,buffer) != EOF)
            {
                           .....
            }
    

    Das sollte deine Probleme beheben, inclusive eof handling und ersten character

    Hast du diese Abprüfung mal getestet?
    Wetten, dass du mind. 1 Fehler vom Compiler gemeldet bekommst.



  • Du weist doch doppelt genäht hält besser 🤡

    while(NULL!=fgets(buffer,20,UserFile))
            {
                           .....
            }
    


  • Ich hätte eher das 0!= weggemacht (oder eigentlich gleich alles mit != 😉 ; aber das ist eher nebensächlich).

    Schau dir mal die Syntax zu fgets() an 😉



  • 🕶 Stimmt das is Geschmakssache 🕶


Anmelden zum Antworten