Zeilenumbruch verhindern?



  • Nabend zusammen.
    Ich muss morgen mein Programm abgeben und habe noch ein kleines Problem.

    Und zwar wird bei der Eingabe einer Zahl die daraufhin ausgegebene Zahl darunter ausgegeben...
    Gibt es keine Möglichkeit die daneben angeben zu lassen?

    #include <stdio.h> //Bibliothek für printf, scanf, ...
    #include <conio.h> //Bibliothek für getch, gets, ...

    double zucelsius(int f){
    return ((f-32)*5.0/9.0);
    }

    int main(void)
    {

    int f;

    printf("Fahrenheit\tCelsius\n");

    do
    {

    scanf("%d", &f);

    printf("\t\t%.1f\n", zucelsius(f));

    } while(f<200);

    printf ("\nProgrammende");

    _getch();

    return 0;
    }



  • Wenn du keinen Zeilenumbruch willst, darfst du auch kein '\n' verwenden.



  • Der Zeilenvorschub kommt durch das <Enter> beim scanf.



  • Am Enter lag es leider nicht.
    Und das \n ist für das nächste scanf was folgt, weil es sonst neben der ausgegeben Zahl steht

    Bsp:

    Fahr Cels
    0 -17.8

    So soll das aussehen

    Momentan siehts so aus:

    Fahr Cels
    0
    -17.8
    X
    YY

    ohne das \n würde das "X" neben -17.8 stehen..



  • Du verwendest doch schon _getch() aus conio.h, dann lies damit zeichenweise ein in einen String und stoppe bei '\n' (ohne dessen Ausgabe).



  • Uff jetzt bin ihc überfordert xD
    Was sind das für Befehle mit dem string?
    und was meinst du mit stoppen? break; ?

    Edit: Ist das char [] ?



  • Ein String in C bedeutet tatsächlich ein char[] mit abschließendem '\0'.
    getch() ist nicht C Standard, aber darauf scheint es ja bei deiner Aufgabe nicht anzukommen, zumal getch() auch kein Konsolenecho erzeugt.
    Du liest zeichenweise ein (in einen String), gibst die Zeichen bis auf '\n' auch wieder aus, dann sollte es doch nicht mehr schwer sein:

    int main()
    {
      char s[100],*p=s;
      int c;
      while( (c=_getch())!='\r' ) /* für Windows hier CR=='\r' nötig, statt sonst NL/LF '\n' */
      {
        putchar(c); /* gelesenes Zeichen an Konsole ausgeben */
        *p++=c; /* gelesenes Zeichen an String anhängen */
      }
      *p='\0'; /* Stringende-Markierung */ 
      printf(" %f\n",zucelsius(atoi(s))); /* String in int umwandeln und an Funktion übergeben */
      return 0;
    }
    

    Ich glaube aber, dass diese deine Sorgfalt bei der Ausgabe nicht entsprechend honoriert werden wird, eher solltest du bei C schon wissen, was ein String ist bzw. wie er gewöhnlich interpretiert und verwendet wird.



  • Ja so ist das leider auch xD
    Kann damit leider noch nicht so viel mit anfangen.
    Naja, trotzdem vielen Dank. Ich experimentier noch bissl rum 🙂



  • Buster92 schrieb:

    Am Enter lag es leider nicht.

    Bei scanf wird jedes Zeichen das du eingibst auch als Echo auf die Konsole ausgegeben, damit du siehst was du tippst. Und wenn du mit der Eingabe fertig bist drückst du doch die <Enter> (oder <Return>)-Taste.


Anmelden zum Antworten