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!)
\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??
\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 :-)
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.