PDA

View Full Version : Stampe? dove finiscono? :o


Phantom89
13-11-2008, 23:29
Sera a tutti, vi volevo porre un problema che mi viene fuori quando eseguo programmi C su ubuntu, in pratica se io ho un sorgente che esegue delle stampe, l'ultima stampa prima della chiusa non la esegue mai -.- cioè se io ho una cosa di questo tipo

int main() {
.........
.........
printf("%d\n",NMax);
printf("%.2f\n",Media);
return 0;
}

mi esegue la stampa di

printf("%d\n",NMax);

mentre la stampa di

printf("%.2f\n",Media);

non appare O__O assurda sta cosa :S poi se vojo che appaia anche l'ultima stampa dovrei aggiungere alla fine un altra stampa " inutile " per far si che stampi tutto ciò che voglio, e ovviamente l'ultima cosa da stampare " stampa inutile " non appare .... mistero XD

Gica78R
14-11-2008, 09:10
Il programma lo esegui da una shell o attraverso un IDE?

Phantom89
14-11-2008, 11:30
uhm dal terminale XD , cioè che intendi per IDE?

Gica78R
14-11-2008, 13:30
cioè che intendi per IDE?

L'IDE (Integrated Development Environment) è un programma per... programmare :p tipo Eclipse, KDevelop, ecc. ecc.

Comunque se lo esegui da terminale e ti fa quello scherzo c'è qualcosa che non va; a me, se metto due istruzioni di stampa, funzionano entrambe. Potrebbe esserci qualcosa che ti sfugge, ma se il programma è quello (molto banale) che hai postato, allora non saprei :confused:

Phantom89
14-11-2008, 13:56
mmmm no , girando un pò mi han detto che il problema può stare direttamente a un bug di implementazione del printf(); e mi hanno spiegato che esso prima di stampare a video passa per un buffer e poi stampa a video , solo che a me non fa attempo a stampare a video che il programma termina e il buffer si svuota... per fare andare la stampa o metto uno \n alla fine in modo da visualizzare tutto ciò ke mi interessa " lo \n non verrà visualizzato ovviamente " oppure uso funzioni tipo puts(); che stampano dirette a video bù :S cose molto strane comunque -.-

Gica78R
14-11-2008, 20:21
Il tuo problema si verifica solitamente quando si fanno operazioni un po' più complicate di due semplici stampe sullo standard output (tipo stampare con processi concorrenti e roba simile). Comunque prova a mettere l'istruzione
fflush(stdout);
prima del return e vedi se funziona.


Ciao


PS: questo thread starebbe meglio nella sezione Programmazione :p

Phantom89
14-11-2008, 20:22
Già provato, il
fflush(stdout);
nn va :/ è senza speranze sta cosa :|