Technology fan Δημοσ. 7 Ιουνίου 2010 Δημοσ. 7 Ιουνίου 2010 Εχω ένα προβληματάκι με το παρακάτω: >#include <iostream> #include <fstream> #include <string> using namespace std; main() { ofstream outputfile; outputfile.open("test.txt",ios_base::out); if (outputfile) { [color="Blue"]outputfile<<"5 6"<<endl; [/color] cout <<"output file opened succesfully"<<endl; outputfile.close(); } else cout << "could not open file"<<endl; cout<<"hello"<<endl; int a; [color="Red"]//char a[30];[/color] cout <<"after closing file"<<endl; ifstream inputfile; inputfile.open("test.txt",ios_base::in); if(inputfile) { cout <<"input file opened succesfully"<<endl; cout <<"periexei ta parakatw:"<<endl; while(!(inputfile.eof())) { [color="Red"]//strcpy(a,"");[/color] inputfile>>a; cout<<a<<" "; } inputfile.close(); } else { cout << "could not open input file"<<endl; } system("pause"); } στο τέλος εκτυπώνεται δύο φορές το 6, παρ 'όλα αυτά όταν αλλάζω την μπλε γραμμή χωρίς endl τότε γίνεται μια χαρα. Επίσης, όταν α είναι char τότε το σχόλιο (κόκκινη γραμμη) το διορθώνει, τι μπορώ να κάνω εκτός απο το προφανής να μη βάζω endl εγγράφοντας το αρχείο?
bxenos Δημοσ. 7 Ιουνίου 2010 Δημοσ. 7 Ιουνίου 2010 Το αρχείο που έχεις ανοίξει για output λειτουργεί σωστά. Γραφεις "5 6\n" Οταν διαβάζεις όμως, ελέγχεις αν έχεις eof (που ακόμα και μετά το 6 δεν έχεις eof), οπότε στην 3η επανάληψη, δεν διαβάζει 6 απο το αρχείο, αλλά αποτυγχάνει η ανάγνωση αριθμού και το a μένει απείραχτο με την τελευταία τιμή του.
karabouzouk... Δημοσ. 7 Ιουνίου 2010 Δημοσ. 7 Ιουνίου 2010 Το αρχείο που έχεις ανοίξει για output λειτουργεί σωστά.Γραφεις "5 6\n" Οταν διαβάζεις όμως, ελέγχεις αν έχεις eof (που ακόμα και μετά το 6 δεν έχεις eof), οπότε στην 3η επανάληψη, δεν διαβάζει 6 απο το αρχείο, αλλά αποτυγχάνει η ανάγνωση αριθμού και το a μένει απείραχτο με την τελευταία τιμή του. >while(!(inputfile.eof())) { if (a != eof){ inputfile>>a; cout<<a<<" "; } } Κάτι τέτοιο εννοεί ο bxenos...
3c0r1z Δημοσ. 7 Ιουνίου 2010 Δημοσ. 7 Ιουνίου 2010 Αν θέλεις να αντιγράψεις το αρχείο στην cout μπορείς να χρησιμοποιήσεις την rdbuf(). >// ... ifstream inputfile; inputfile.open("test.txt",ios_base::in); if(inputfile) { cout <<"input file opened succesfully"<<endl; cout <<"periexei ta parakatw:"<<endl; cout << inputfile.rdbuf(); inputfile.close(); } // ...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.