|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
problemino fprintf e fscanf in C++
salve a tutti,
per imparer bene l'utilizzo di queste due funzioni ho provato a scrivere un programmino che partendo da due file txt (filein.txt e fileout.txt) facesse la seguente operazione: avendo in filein.txt questo: Numero 1 : 34 Numero 2 : 44 Numero 1 : 87 il programma dovrebbe leggere il filein e scrivere nel fileout.txt questo: 34 44 87 il codice del programma e' questo: /*Prova di utilizzo di istruzioni su file*/ #include <stdio.h> FILE *in; FILE *out; void main( void ) { int uno , due , tre ; in = fopen( "filein.txt" , "r" ); out = fopen( "fileout.txt" , "w" ); fscanf( in , "numero 1 : %d\n" , &uno ); fscanf( in , "numero 2 : %d\n" , &due ); fscanf( in , "numero 3 : %d\n" , &tre ); fprintf( out , "%d\n" , uno ); fprintf( out , "%d\n" , due ); fprintf( out , "%d\n" , tre ); fclose( out ); fclose( in); } pero' se faccio andare il programma e guardo il fileout.txt mi ritrovo questo: -858993460 -858993460 -858993460 qualcuno sa dove ho sbagliato e come correggere il programma?? Grazie mille! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
ma usare l'i/O del C++ no, eh?
Codice:
#include <iostream> #include <cstdio> #include <string> #include <sstream> #include <fstream> #define MAX_BUF 12000 using namespace std; ostream& scrivi( ostream& , string ); string leggi( istream& ); int main() { ifstream in; in.open( "C:\\io.txt" ); ofstream out; out.open( "C:\\DirectXOLD.txt" ); scrivi( out, leggi( in ) ); cout << "\n"; system( "PAUSE" ); return 0; } ostream& scrivi( ostream& out, string mesg ) { out << mesg; return out; } string leggi( istream& in) { string str; char buf[MAX_BUF+1]; while(!in.eof()) { in.read(buf, MAX_BUF); str.append(buf, in.gcount()); } return str; }
__________________
Gnu/Linux User ![]() Ultima modifica di Luc@s : 16-09-2003 alle 13:25. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
si ma come si spiega la strano risultato del mi programma?
Ultima modifica di Jarlaxle : 16-09-2003 alle 13:41. |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
devono essere numeri assegnati a caso dal compilatore
![]() |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
ok e qual'e' il problema per cui non funziona il programma?
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Quote:
Codice:
fscanf( in , "numero 1 : %d\n" , &uno ); |
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
e per memorizzare solo il numero e non la stringa come dovrei dovrei utilizzare l'istruzione??
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Prima di leggere con fscanf dovresti fare un fseek di una decina di byte (fa' delle prove).
Per esempio: Codice:
fseek(in,10,SEEK_CUR); |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
ci guardero' pero anche mettendo nel file in
4 e usando fscanftf( in, "%d\n" , &uno); non funziona come puo' essere??? mentre in questo caso se uso printf( "%d\n" , uno); sullo schermo compare 4 mentre nel file out compare quello schifo! |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Ho fatto la prova, cosi' funziona:
Codice:
... fseek(in,10,SEEK_CUR); fscanf( in , "%d" , &uno ); ... |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
lovaz la soluzione con fseek che hai postato funziona con che testo all'interno di filein.txt??
numero 1 : 4 oppure 4 quale??? |
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
X Fenomeno85: fprintf ha la stessa funzione di printf ma stampa la stringa all'interno del file specificato nel primo parametro della funzione
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Quote:
|
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#16 |
Member
Iscritto dal: Jun 2002
Messaggi: 63
|
X lovaz : Grazie mille!
XFenomeno85 : di nulla! ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:50.