Domanda

Ho un semplice programma che converte un tipo di file in un altro. Ci sono alcune chiamate a FRINTF () (in modo approssimativamente linearmente dipendente dalle dimensioni del file da convertire). Quando ho iniziato, non c'erano chiamate per flare (). Sui piccoli file (<10 KB) non c'era alcun problema. Su un file più grande, (> 40 kb) l'intera cosa si è schiantata quando è stata raggiunta la chiamata a fClose ().

Allora, pensavo che forse stavo lasciando che il buffer riempiasse troppo o qualcosa, quindi ho inserito le chiamate a fflush () dopo circa * 512 chiamate a FRINTF (dove ogni chiamata stampa tra 8 e 10 caratteri). Il programma si blocca ancora sulla chiamata a FClose ().

* Perché non contando in realtà le chiamate a FPRINTF e sto usando un altro conteggio già nel programma, è possibile che questo numero sia inferiore a 512.

Questo mi porta alla mia domanda. Quando dovrebbe essere chiamato fflush ()? Dovrebbe essere chiamato dopo una certa quantità di dati è stato fprintf'd? O c'è qualcosa che mi manca?

Grazie

A proposito, nel caso sia pertinente, sono su Windows 7 (64 bit) e ho fopen il file di output in modalità "A +"

È stato utile?

Soluzione

È completamente legittimo chiamare fprintf tutte le volte di cui si è bisogno senza una singola chiamata a fflush.Gli arresti anomali sono causati da qualcos'altro nel tuo programma, molto probabilmente alcuni accessi di memoria non valida e aggiungendo chiamate fflush non li risolvono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top