FSTREAM Problem
-
int main() { int len=20; char buffer[200]; char buffer2[200]; fstream fs("test.txt",ios::binary|ios::out); cout<<"\nText: "; scanf("%d",buffer); fs.write(buffer,sizeof(len)); printf("%d",buffer); fs.read(buffer2,sizeof(len)); printf("%d",buffer2); if(buffer==buffer2) { printf("\nTest erfolgreich..."); } return 0; }Das Problem ist das der Test NICHT erfolgreich ist. Warum nicht?
Wie schreibe ich einen int Wert in eine Textdatei um ihn später wieder auszulesen und der Wert auch der tatsächliche ist?
-
lass dir die zwei buffer doch mal ausgeben

das problem ist, dass die beiden buffer eigentlich nur zeiger auf das erste element in den feldern sind. und da die felder an verschiedenen addressen liegen, ist "buffer1 == buffer2" offensichtlich immer false.
was du machen könntest ist, die felder zeichenweise (in einer schleife) zu vergleichen.
oder die funktion strcmp (oder so ähnlich) zu benutzenwas du machen solltest ist, std::string anstatt char[] zu benutzen.
und dir im faq-bereich die themen durchzulesen, wo "string" vorkommt. (ich fürchte aber, der strings-vergleichen-thread heißt irgendwie komisch. oder es gibt ihn nicht. aber wahrscheinlich hab ich ihn jetzt auf die schnelle einfach nicht gefunden)
-
Wenn ich den Code compilie funktioniert allerdings auch die Ausgabe mit printf nicht richtig, also ist der Vergleich nicht das einzige Problem
mgf.
-
ist ja auch klar, erstens ist der datei(schreib-)pointer schon
am ende, nachdem du was geschrieben hast, außerdem ist die
datei write-only geöffnet. also nochmal zum lesen öffnen.
oder als rw öffnen, und nach dem schreiben zurückspulen.int main() { int len=20; char buffer[200]; char buffer2[200]; fstream fs("test.txt",ios::binary|ios::out); cout<<"\nText: "; scanf("%d",buffer); fs.write(buffer,sizeof(len)); printf("%d",buffer); // *********************************************************** // <= hier müsstest du den stream schließen, und zum lesen // ("ios::in" glaube ich) öffnen // *********************************************************** fs.read(buffer2,sizeof(len)); printf("%d",buffer2); if(buffer==buffer2) { printf("\nTest erfolgreich..."); } return 0; }