Seite 1 von 1

new line bei scanf *HELP (C)

Verfasst: Di Mär 08, 2016 8:12 pm
von Wissenslücke
hallo liebe community,

nach der Anweisung scanf wollte ich durch new line ein wenig Abstand zur Antwort schaffen. Nur leider will das Programm nach einer Zahl noch ein ?Buchstaben? bzw ein Wort bevor man mit Enter weiter kommt.
Ohne new line bei scanf funktioniert es, nur ohne schöne Leerzeile ;(
Hat jemand Rat ?

Gruß WL
#include <stdio.h>
#include <math.h>

double celsius2fahren(double TCelsius);
double celsius2fahren(double TCelsius) {

double TFahrenheit = (( TCelsius* 9 ) / 5 ) + 32;

return TFahrenheit;

}

int main () {

double a;
printf("Herzlich wilkommen im Celsius-Fahrenheit-Umrechner.\n\nBitte geben Sie eine Celsius-Temperatur an:");
scanf(" %lf \n\n" ,&a);
printf("%lf Celsius sind umgerechnet %lf Grad Fahrenheit. ",a,celsius2fahren(a));
return 0;
}

Re: new line bei scanf *HELP (C)

Verfasst: Di Mär 08, 2016 8:50 pm
von Xin
Bitte in scanf keine sonstigen Zeichen erwarten!
Am besten nur erwarten, was Dir bekannt ist, das auch kommt.

Kurz: verwende scanf im Idealfall so wenig wie möglich.

Besser: übergib die Zahl als Programmparameter. Wie das geht steht hier im C-Tutorial. Bin mi'm Händi online, daher heute kein Link. ^^

Re: new line bei scanf *HELP (C)

Verfasst: Mi Mär 09, 2016 10:15 am
von cloidnerux
Hier der Link zum Wiki-Eintrag
https://www.proggen.org/doku.php?id=c:f ... :parameter

Soweit ich weiß ist der Formatstring bei scanf nicht zur Ausgabe gedacht, sondern um deine Eingabe zu formatieren.
Wenn du newlines ausgeben willst, musst du printf nutzen.

Re: new line bei scanf *HELP (C)

Verfasst: Mi Mär 09, 2016 3:41 pm
von Wissenslücke
Danke für die Antworten. Die new line bei scanf hatte ich auch nur weil ich wollte, dass der blinkende Unterstrich direkt hinter dem Doppelpunkt der Aufforderung steht. Bei printf new line steht der Unterstrich in der nächsten Zeile. Aber ich schätze mit printf oder scanf hat man später sowieso nichts mehr am Hut.

LG WL

Re: new line bei scanf *HELP (C)

Verfasst: Mi Mär 09, 2016 3:46 pm
von Xin
Nimm printf für die Ausgabe ohne \n. Die Ausgabe ist gepuffert. Um den Puffer zu leeren schau Dir fflush an. Dann hast Du, was Du suchst.
Mit Newlones in scanf vermute ich, dass Du Dir das Antwortverhalten unerklärlich machst.