sleep



  • Mir wird nicht einmal ein Zeichen ausgegeben. Warum klappt das nicht?

    while(1)
    	{
    		sleep(1);
    		printf("%c", character);
    	}
    


  • vielleicht poste ich doch nochmal den gesamten code.
    ich bekomme keine einzige ausgabe 😞

    #include <stdio.h>
    #include <signal.h>
    #include <stdlib.h>
    
    int main(void)
    {
    
    	FILE* file;
    	file = fopen("file.txt", "r");
    	char character = getc(file);
    	printf("%c", character);
    	while(1)
    	{
    		sleep(1);
    		printf("%c", character);
    	}
    
    	fclose(file);
    
    	return EXIT_SUCCESS;
    }
    


  • Probier mal:

    #include <stdio.h>
    #include <signal.h>
    #include <stdlib.h>
    
    int main(void)
    {
    
    	FILE* file;
    	if(!(file = fopen("file.txt", "r")))
            {
               printf("Kann File nicht oeffnen\n");
               return 1;
            }
    
    	int character;
    
    	while((character = getc(file)) != EOF)
    	{
    		sleep(1);
    		printf("%c", character);
    	}
    
    	fclose(file);
    
    	return EXIT_SUCCESS;
    }
    

    wobei mein gcc die sleep-Funktion nicht kennt ...



  • Wenn man einzelne Zeichen ausgibt, werden die zunächst gepuffert und erst beim nächsten Zeilenumbruch tatsächlich ausgegeben.

    Das sollte helfen:

    while((character = getc(file)) != EOF)
    {
        sleep(1);
        printf("%c", character);
        fflush(stdout);
    }
    


  • Bei mir läuft das auch ohne fflush einwandfrei; ich habe das jetzt mal mit Sleep aus der WinAPI getestet.



  • Es kann natürlich sein, dass stdout von sich aus ungepuffert ist, muss aber nicht.

    Man kann es auch in jedem Fall ohne fflush machen, wenn man zu Beginn (bevor irgendetwas nach stdout ausgegeben wurde)

    setbuf(stdout, NULL);
    

    aufruft.



  • super, hat geklappt 🙂
    danke euch!

    lg adi


Anmelden zum Antworten