Forum: PC-Programmierung Zeilenumbruch \n


von Da Mo (Gast)


Lesenswert?

Gibt es einen anderen Weg um einen Zeilenumbruch zu bewirken als mit 
einer eigenen printf-Anweisung?
1
  printf("\nAuswahl < >\b\b");
2
  scanf("%d", &auswahl);
3
  printf("\n"); //gibt es einen anderen Weg dafuer?

Vielen Dank!

von Sebastian Hepp (Gast)


Lesenswert?

Du meinst, dass nach einer Eingabe automatisch ein Zeilenumbruch 
stattfindet?

von Da Mo (Gast)


Lesenswert?

Um die Anzahl der Code-Zeilen zu verkleinern, möchte ich wissen, ob es 
eine Möglichkeit für \n in der scanf-Anweisung gibt?

von Philipp W. (johnnyflash)


Lesenswert?

Wenn du nur die Anzahl der Codezeilen verringern willst, kannst du 
natürlich das printf direkt hinter das Semikolon deiner scanf Funktion 
schreiben ;-)
Also, ich wüsste jetzt keine Lösung dafür, frage mich aber, wozu das gut 
sein soll!?

von Konrad S. (maybee)


Lesenswert?

Ein "\n" im scanf() geht schon, aber scanf() macht Input, printf() macht 
Output.

von Chris S. (hondaracer1)


Lesenswert?

wenn er sein scanf so aufbaut das der benutzer die eingabe mit enter 
bestätigen muss, dann sollte das doch auch passen oder? Wenn das nicht 
möglich ist, dann musst du mir der printf zeile wohl leben.
wo ist denn das \r? oder ist das prog nicht für windoof?

von Tom (Gast)


Lesenswert?

Chris S. schrieb:
> wo ist denn das \r? oder ist das prog nicht für windoof?

"When writing a file in text mode, '\n' is transparently translated to 
the native newline sequence used by the system, which may be longer than 
one character."

von Karl H. (kbuchegg)


Lesenswert?

Und wenn alle Stricke reißen, dann bleibt immer noch die 
Software-technische Lösung: Für immer wiederkehrende Sachen ... schreib 
dir eine Funktion.

Erst mal überlegen, wie du die Funktion benutzen möchtest:

Du möchtest zb in main() gerne schreiben können
1
int main()
2
{
3
  int choice;
4
5
6
  ....
7
8
9
  choice1 = promptUser( "\nAuswahl < >\b\b" );
10
  choice2 = promptUser( "\nStock   < >\b\b" );
11
...
12
}

so möchtest du das verwenden können. Sieht doch nicht schlecht aus.

Wie muss daher dann die Funktion aussehen?
1
int promptUser( const char* prompt )
2
{
3
  int answer;
4
5
  printf( prompt );
6
  scanf( "%d", &answer );
7
  printf( "\n" );
8
9
  return answer;
10
}

und schon hast du eine schöne neue Funktion in deinem "Werzeugkasten", 
die du immer dann benutzt, wenn du vom Benutzer eine 1-stellige Zahl 
haben willst. Du kannst das auch noch weiter aufbohren, dass du der 
Funktion zb sagst: Zahl ist gut, aber sie sollte im Bereich 0 bis 5 
sein. 6 wäre zb eine illegale Eingabe und der Benutzer muss die Eingabe 
wiederholen. zb. zb.
Mit Funktionen eröffnen sich oft ganz neue Möglichkeiten, wie man Dinge 
schön strukturieren kann. Du möchtest vielleicht auch einen zentralen 
Punkt, andem du Fehlerbehandlung machen kannst. Denn wenn dein Benutzer 
anstelle von 5 <Return> auf A <Return> drückt, dann sieht dein scanf 
ganz schön alt aus :-) Auch hier ist dann wieder die Funktion promptUser 
die Anlaufstelle um dieses Manko zu beheben. Und zwar für dein 
komplettes Programm.

von Tim R. (herrvorragend)


Lesenswert?

einfach an den anfang der nächsten printf ein /n benutzen und schon hat 
sich die sache erledigt?

printf("...");
scanf("%d",&x);
printf("\n...");

von Da Mo (Gast)


Lesenswert?

Vielen Dank für eure Hilfestellungen.

von Sven P. (Gast)


Lesenswert?

Manche Leute kriegen auch nach Jahren immer noch nicht den Unterschied 
zwischen printf() und puts() und fputs() auf die Reihe.

printf() führt dann oft zu lustigen Fehlern, wenn damit zum Beispiel 
Text gedruckt wird, der vom Benutzer eingegeben wurde.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.