www.mikrocontroller.net

Forum: PC-Programmierung Zeilenumbruch \n


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Da Mo (Gast)
Datum:

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

Vielen Dank!

Autor: Sebastian Hepp (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Du meinst, dass nach einer Eingabe automatisch ein Zeilenumbruch 
stattfindet?

Autor: Da Mo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: Philipp W. (johnnyflash)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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!?

Autor: Konrad S. (maybee)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ein "\n" im scanf() geht schon, aber scanf() macht Input, printf() macht 
Output.

Autor: Chris S. (hondaracer1)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: Tom (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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."

Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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
int main()
{
  int choice;


  ....


  choice1 = promptUser( "\nAuswahl < >\b\b" );
  choice2 = promptUser( "\nStock   < >\b\b" );
...
}

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

Wie muss daher dann die Funktion aussehen?
int promptUser( const char* prompt )
{
  int answer;

  printf( prompt );
  scanf( "%d", &answer );
  printf( "\n" );

  return answer;
}

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.

Autor: Tim R. (herrvorragend)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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...");

Autor: Da Mo (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Vielen Dank für eure Hilfestellungen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net