Anfänger_probleme



  • Hallo.

    ich wollt mal wissen, warum mein microsoft visual nach dem debuggen mein programmteil nicht abspielt und zwar:

    #include <stdio.h> 
    #include <ctype.h> 
    
    void main () 
    { 
    float temperatur; 
    char zeichen; 
    printf("\n\tT E M P E R A T U R R E C H N E R\n"); 
    printf("\n1 Fahrenheit \n2 Reaumur \n3 Kelvin"); 
    printf("\n4 Rankine \n0 Ende\n"); 
    scanf("%c", &zeichen); 
    zeichen = getchar(); 
    switch(zeichen) 
    { 
    case '0': 
    break; 
    case 1: case 2: case 3: case 4: 
    printf("\nBitte Grad Celsius eingeben:"); 
    scanf("%f", &temperatur); 
    if (temperatur >= -273.15) 
    switch(zeichen) 
    { 
    case '1': 
    printf("\n%.2f °C sind %.2f °F ", 
    temperatur, 9.0/5.0*temperatur+32.0); 
    break; 
    case '2': 
    printf("\n%.2f °C sind %.2f °R ", 
    temperatur, 4.0/5.0*temperatur); 
    break; 
    case '3': 
    printf("\n%.2f °C sind %.2f K ", 
    temperatur, temperatur+273.15); 
    break; 
    case '4': 
    printf("\n%.2f °C sind %.2f °Rank ", 
    temperatur, 9.0/5.0*(temperatur+273.15)); 
    break; 
    } 
    else 
    printf("\nDiese Temperatur gibt es nicht!"); 
    default: 
    printf("\nUngueltige Option\n"); 
    } 
    }
    

    bis printf("\n4 Rankine \n0 Ende\n");
    spuckt ers noch aus. aber nachdem ich dann ausgewählt hab scant er noch, lässt mich aber dann nicht fortfahren. bzw. geht nicht von alleine in das ausgewählte programm.
    wer kann mich auf meinen fehler aufmerksam machen.
    danke!

    Edit by c.rackwitz: das naechste Mal benutzt du aber bitte [cpp] Tags...



  • wie wärs mit cpp tags 😞
    soweit ich weiß gibt getchar() einen int zurück deine cases bringen also nix,
    weil du auf char überprüfst...



  • Dass getchar() ein int zurückliefert ist nicht das Problem.

    fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.

    Das eigetnlich Problem dürfte eher sein, dass er zuerst mit scanf() einliest und dann getchar() aufruft. Das macht erstens keinen Sinn und sorgt zweitens dafür, dass nach scanf() noch ein \n im Puffer liegt, welches dann mit getchar() gelesen wird, ohne auf eine Eingabe des Users zu warten.



  • icepacker schrieb:

    soweit ich weiß gibt getchar() einen int zurück deine cases bringen also nix,
    weil du auf char überprüfst...

    falsche erklaerung. chars und ints sind beides ganzzahltypen.

    @threadstarter: dein problem loest sich, wenn du folgendes machst:
    - dich fuer nur scanf oder nur getchar() entscheidest
    - nach einem scanf folgendes idiom benutzt: while (getchar() != '\n'); weil damit der eingabepuffer geleert wird, der eventuell zur blockierung fuehren koennte.


Anmelden zum Antworten