IProgrammatori.it

Forum programmazione

Forum di supporto alla programmazione in generale e nei principali linguaggi.

Oggi è sab lug 31, 2010 6:54 pm

Tutti gli orari sono UTC + 2 ore




   [ 3 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: [linux C] problema output
MessaggioInviato: mar ott 02, 2007 6:00 pm 
Array[]
Iscritto il: ven lug 14, 2006 11:14 am
Messaggi: 736
Località: Inside the N.A.K.

non capisco per quale motivo se inserisco uno sleep in modo che una stringa venga scritta carattere per carattere sullo stdout, i caratteri non vengono visualizzati uno alla volta, ma tutti assieme dopo che è passato il ritardo previsto per tutti i tasti.....

vi passo il sorgente

Codice:
// gcc -Wall -xc norbix.c -o norbix

#include <stdio.h>
#include <string.h>
#include <unistd.h>

void text(char *text);

int main()
{
     text("\n\nN0R81X Powered.....\n\n");

     return 1;
}

void text(char *text)
{
     int i = 0;

     for(i = 0; i <= strlen(text); i++)
     {
          printf("%c", text[i]);

          usleep(75*1000);
     }
}


in pratica, se stampo un carattere alla volta la console aspetta senza scrivere nulla, quando ha finito scrive la frase tutta in un colpo

mentre se inserisco una newline tra un carattere e un altro, così.. printf("%c\n", text[i]);.. tutto funziona, gli sleep creano il ritardo desiderato scrivendo carattere per carattere (ma con il ritorno a capo ogni volta) ogni 75ms...

qualcuno può dirmi come risolvere il problema?

_________________
#include <antisocialbastard>

anti-social_bastard_init(&norbix);


   
 Oggetto del messaggio:
MessaggioInviato: mar ott 02, 2007 6:14 pm 
Admin
Avatar utente
Iscritto il: mar giu 06, 2006 4:00 pm
Messaggi: 2299
Località: Italia

così va
Codice:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
void caricamento(){
        int j;
        for(j=0;j<3;j++){
                sleep(1);
                printf(".");
                fflush(stdout);
         }
        printf("\n");
}
int main(){
        caricamento();
}

_________________
Big-Bug cerca collaboratori.
Cerca di scrivere con un italiano corretto.


   
 Oggetto del messaggio:
MessaggioInviato: mar ott 02, 2007 7:26 pm 
Array[]
Iscritto il: ven lug 14, 2006 11:14 am
Messaggi: 736
Località: Inside the N.A.K.

k tra poco lo provo grazie, bastava pulire lo stdout dunque eh

_________________
#include <antisocialbastard>

anti-social_bastard_init(&norbix);


   
Visualizza ultimi messaggi:  Ordina per  
   [ 3 messaggi ] 

Tutti gli orari sono UTC + 2 ore


 Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
 
cron