zweidimensionales Array mit fprintf in Textdatei schreiben
-
for (int i=0;i<=17;i++)
{
for(int j=0;j<=17;j++)
{
cout<< array[i][j];}
cout <<"\n";
[cpp]
Ich habe es versucht dieses Array einfach mittels fprintf(f, array[i][j]); in eine Textdatei zu schreiben. Da kamm jedoch nur die Fehlermeldung fprintf(f, array[i][j]);"invalid coversion from char' to 'const char* ".
Wie kann ich dieses Array in eine Datei schreibe, so dass es so formatiert ist wie in der Augabe.Danke!
-
versuchs doch mal mit fstream, dann kannste auch den << operator nehmen:
#include <fstream>
mit ofstream die datei öffnen:
ofstream bla ("bla.txt");
und dann einfach mit
bla<<wasauchimmer;
in die datei schreiben und zum schluss nicht
bla.close();
vergessen
grüsse steve
-
fprintf(f, "%c", array[i][j]);
edit:
Prinzipiel würde man in C++ natürlich streams nutzen.
-
@Entyl_Sa
du weist ja net was fürn typ in dem array ist, der compilerfehler bezieht sich ja darauf, das er das array als typangabe übergeben hat...
@nieselfriem es kommt also darauf an, welcher typ in dem array is... bei integern musst du dann glaube ich %i nehmen... aber verwende besser gleich streamsgrüsse steve
-
aber mit der Steam-Methode schreibt er obwohl ich bla<<array[i][j] in der doppelschleife ist nur die erste zeile aus wobei bei cout die ausgabe gut funzt
-
Steve03 schrieb:
der compilerfehler bezieht sich ja darauf, das er das array als typangabe übergeben hat...
Das verstehe ich leider nicht! Meine Interpretation der Fehlermeldung ist das er einen char bekommt wo er einen (const) char * erwartet.
Aber das Problem ist ja bei seinem fprintf Aufruf auf jeden Fall das er als zweites Argument keinen char * übergibt. Wenn sein Array dann einen anderen Typ hat, dann kann er es ja immer noch anpassen.
Und sonst bin ich ja einer Meinung mit dir.
Gruß Entyl Sa
-
hi,
ich meinte:
er hat einfach nur geschrieben:fprintf(f, array[i][j]); //fehler: erwartet als 2ten parameter const char*
also bezug sich imo der fehler des compilers auf den parameter, und nicht darauf, welchen wert er im array hat
naja is ja auch nich so wichtiggrüsse steve
-
du musst einen Formatierungsstring übergeben. Lies lieber noch ein wenig in deinem C Buch und informier dich über printf/fprintf.
Aber in C++ nimmt man kein printf. Liest du vielleicht ein C Buch?
-
bei ofstream wird immer nur ide erste zeile geschrieben
-
nimm
textdatei<<array[bla]<<"\n"
für nen zeilenumbruch (oder auch << endl;)grüsse steve
-
Zeig mal mehr Code.
file << "\n"; //besser: file << '\n';
Eventuell noch ein
file << flush; //oder file << endl;
hinterher.
Von endl statt '\n' würd ich dir abraten.
-
davie schrieb:
Von endl statt '\n' würd ich dir abraten.
Eher andersherum oder nicht?
'\n' = Zeilenumbruch, und nur das
endl = Zeilenumbruch und Puffer ausleeren, wenn man endl benutzt spart man sich ne Menge Fehlersuche, weil Texte dann ausgegeben werden wenn man es erwartet
-
idR sind (Benutzer)Ein- und Ausgabe (also cin/cout) aufeinander abgestimmt.
Vor jedem cin gibt es ein flush. Bei einem Destruktoraufruf wird ein Stream ebenfalls geflusht.
Wenn ich allerdings eine Zeile in eine Datei schreibe, flushe, die nächste Zeile in die Datei schreibe, etc. dann hab ich den Nachteil, dass ich jedesmal auf das "echte Schreiben" warten muss. Ansonsten hab ich nen Puffer.
OK, bei so kleinen Beispielen ist es egal, aber es hat sich gezeigt, dass eine konsequente konsistente Programmierweise nicht zu vernachlässigende Vorteile hat.
-
also sein soll es folgendermaßen:
(quadrat solls ein, das forum mag aber keine zu langen Ketten von leerzeichen)
* * * * * * * *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * *mit
for (int i=0;i<=7;i++) {
for (int j=0;<=7;i++) {
fprintf (f,"%c",array[i][j])
}
}funzt es, wenn ich das aber mit ofstream mache also einfach b<<array[i][j]"\n";
oder b<<array[i][j]; schreibt er nur die obere zeile untereinander oder nebeneinander[cpp]
-
for (int i = 0; i < 8; ++i) { for (int j = 0; j < 8; ++j) { file << array[i][j]; } file << '\n'; }
-
erstmal danke und darauf hätte ich ja auch kommen können.
:p
mfg niesel