[gelöst] printf sorgt für Absturz?



  • ich poste hier mal ein kleines Progrämmchen bei dem mir etwas seltsames mit "printf" passiert: Wenn ich es compiliere und ausführe stürzt das Prog. ab und bringt mir ein Fenster mit folgendem Inhalt: "dezimal.exe hat ein Problem festgestellt und muss beendet werden.
    Falls Sie Ihre Arbeit noch nicht gespeichert hatten, können [...das kennt sicher jeder...]
    Für weitere Informationen zu diesem Fehler, klicken Sie hier."

    Wie kommt es dazu? Mache ich da was am Quelltext falsch? Sowas ist mir vorher auch bei ähnlichen Programmen (mit und ohne switch- Anweisung - also ohne erkennbaren Zusammenhang mit anderem Code) noch nicht unter gekommen. 😕

    hier mal der Code:

    #include <stdio.h>
    
    int main(void)
    {
          int zahl=0;
          char wahl='\0';
          printf("\n\t Berechnung von Dezimal \n\n");
          printf("\n wahlen Sie:");
          printf("\n (O)ktal \n (H)exa \n (A)SCII \n ");
          wahl = getchar();
          printf("\n Bitte Geben Sie die Dezimalzahl ein:");
          scanf("%i",zahl);
          switch (wahl) //switch (toupper(wahl))
          {
                 case 'O':
                      printf("\n %i Dezimalzahl ist gleich %o in Oktalzsahl", zahl, zahl);
                      break;
                 case 'H':
                      printf("\n %i Dezimalzahl ist gleich %h in Hexazahl", zahl, zahl);
                      break;
                 case 'A':
                      if (zahl <= 255)
                      printf("\n %i Dezimalzahl ist gleich %c in ASCII-code", zahl, zahl);
                      else
                      printf("\n Diese Zahl ist zu gross");
                      break;
                 default:
                 printf("\n Falsche Option");
                 }
    system ("pause");
    return 0;
    }
    

    Vielen Dank für Eure Anregungen!

    Gruß
    Christian



  • scanf("%i",**&**zahl);



  • Man sieht den Wald vor lauter Bäumen nicht... Tausend Dank!
    Christian



  • printf("\n %i Dezimalzahl ist gleich %h in Hexazahl", zahl, zahl);
    

    Ich weiß jetzt nicht woher du "%h" hast, aber in meinem Buch steht davon nichts!

    x = Datentyp int oder unsigned int wird als vorzeichenlose Hexadezimalzahl ausgegeben 😃

    ! Die Typangabe muß logischerweise mit dem Typ der Variablenliste übereinstimmen.
    Dies ist eine häufig vorgommende Fehlerursache, wenn printf() eine unsinnige Ausgabe produziert. !



  • %h ist der length modifier für short.



  • coolzero0001 schrieb:

    Ich weiß jetzt nicht woher du "%h" hast, aber in meinem Buch steht davon nichts!

    ...ist ein Tippfehler... Der Wald vor lauter Bäumen... ich hatte das "%i" und das "%x" mal zu Testzwecken entfernt. Beim wieder einfügen ist es dann passiert...

    Gruß
    Christian


Anmelden zum Antworten