PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cin/cout vs printf/scanf


desperado2000
2005-05-28, 14:32:46
Hi

Ich habe folgendes in einem C++ Programm gefunden,das wollte ich aber selbst mal in C umschreiben

cout << endl;
und
cout << endl << "Punktesumme: " << Punkte << " / Anzahl der Ballfolgen: " << Ergebnis.size() << endl << endl;

wenn ich das mit printf schreiben wollte müsste es doch heissen

printf("\n")
printf("\n")
printf("Punktesumme: ")
printf("Punkte / Anzahl der Ballfolgen: ") usw.

Oder ist das ganz falsch??

Magnum
2005-05-28, 15:08:21
Hi

Ich habe folgendes in einem C++ Programm gefunden,das wollte ich aber selbst mal in C umschreiben

cout << endl;
und
cout << endl << "Punktesumme: " << Punkte << " / Anzahl der Ballfolgen: " << Ergebnis.size() << endl << endl;

wenn ich das mit printf schreiben wollte müsste es doch heissen

printf("\n")
printf("\n")
printf("Punktesumme: ")
printf("Punkte / Anzahl der Ballfolgen: ") usw.

Oder ist das ganz falsch??
Nee, so ganz falsch ist das nicht, nur hast du die Variablen vergessen. Und du kannst auch alles in eine Zeile schreiben.

so: printf("\n\nPunktesumme: %d / Anzahl der Ballfolgen: %d\n\n", Punkte, Ergebnis.size());
(Jetzt mal angenommen, alles wären Integer-Variablen!)

Coda
2005-05-28, 15:16:24
\n und std::endl ist auch nicht unbedingt das gleiche. std::endl funktioniert immer, wobei es Systeme geben könnte bei denen \n nicht der Zeilenumbruch ist...

desperado2000
2005-05-28, 19:09:52
Hey cool doch viel einfacher als ich dachte :-)
Habs aber leider doch nicht ganz alleine im Garten geschaft :-(
Hmmm ich hab mir schon gedacht das das trivial ist aber wenns mans so sieht sagt man auch Na Klar!!!

Ein Problem hab ich noch
cout << Farben[Ergebnis[j][k]-1] << " ";

Das spuckt dann die Farben aus
wenn ich schreib
printf("Farben[Ergebnis][j][k]-1");

warum spuckt dann die Konsole dann das geschriebene aus und nicht das richtige??

KiBa
2005-05-28, 19:52:57
\n und std::endl ist auch nicht unbedingt das gleiche. std::endl funktioniert immer, wobei es Systeme geben könnte bei denen \n nicht der Zeilenumbruch ist...
mmh, ich dachte immer, dass 'std::cout << std::endl;' dieselben auswirkungen hat wie ein "std::cout << '\n' << std::flush;".
deshalb ist das konstrukt "std::cout << std::endl << std::endl;" ziemlich sinnfrei, eigentlich meint man dabei ja das: "std::cout << '\n' << std::endl;".
Wenn meine Aussage korrekt ist, heißt das ja, dass '\n' immer einen Zeilenumbruch bedeutet. Also unter Windows werden bei '\n' auch 2 byte geschrieben, was dort ja auch nötig ist für einen Zeilenumbruch...
Wo hast du deine Aussage her?

Magnum
2005-05-28, 20:08:08
Ein Problem hab ich noch
cout << Farben[Ergebnis[j][k]-1] << " ";

Das spuckt dann die Farben aus
wenn ich schreib
printf("Farben[Ergebnis][j][k]-1");

warum spuckt dann die Konsole dann das geschriebene aus und nicht das richtige??
Bei printf wird alles, was in Anführungszeichen steht als String interpretiert. Bei dir ist das "Farben[Ergebnis][j][k]-1" und das gibt er dann aus. Was du eigentlich bräuchtest ist: printf("%s", Farben[Ergebnis[j][k]-1]); (Jetzt mal angenommen in Farben stehen Strings. Wenn nicht muss du halt das %s anpassen)

desperado2000
2005-05-29, 03:52:06
Danke dir so hats mein Kumpel mir auch vorhin beim Cafeetrinken auch erklärt ;-) Ich probier das nachher mal aus
Wie ich diese produktiven lauen Sommernächte doch liebe :-)