printf Formatierungsfrage

Gast #1817472
Lesenswert?

Hallo zusammen,

ich wünsche euch einen schönen Samstag vormittag.

Könnt ihr mir sagen, warum folgende Zeile

double d=5, e=8;


printf ("%f durch %f = %f",d,e,d/e  );

"   ? durch ? = ?   "      ausgibt ?

Wie bekomme ich denn die Fragezeichen weg?

Das war schon alles.

Ich danke Euch im Vorraus sehr für die Hilfe.

viele Grüße,

Matthias.
Gast #1817497
Lesenswert?

Hallo,

vielen Dank für Deine Antwort.

doch es geht noch immer nicht.  Als Ausgabe gibt es nur ein 
Fragezeichen.

Der rechnet irgendwie nicht in dem Format.

Muss ich noch eine Library includen?

Grüße, MAtthias.
Gast #1817515
Lesenswert?

Oh, entschuldigung, dass ich hdas alles gart nicht mitgeteilt habe.
bin hier noch anfänger in dem Forum, deswegen.

STK 500 mit Atmega 8515 Chip

AVR Studio4.18

hier mal der ganze code, bin gespannt, woran der Fehler liegen soll



#include <avr/io.h>
#include <stdlib.h>
#include "string.h"


// #include <util/delay.h>    // wenn das aktiviert, dann sendet er gar 
nichts, wißt ihr warum? brauche ich doch  für delay funktionen, nicht 
wahr?

#ifndef F_CPU

#warning "F_CPU war noch nicht definiert, wird nun nachgeholt"


#define F_CPU 8000000UL

#endif



#define BAUD 4800UL      // Baudrate

// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = 
kein Fehler.


#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
  #error Systematischer Fehler der Baudrate grösser 1% und damit zu 
hoch!
#endif



void uart_init(void)
{
  UCSRB |= (1<<TXEN);  // UART TX einschalten
  UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);  // Asynchron 8N1

  UBRRH = UBRR_VAL >> 8;
  UBRRL = UBRR_VAL & 0xFF;
}




int uart_putchar(unsigned char c)        //diese Funktion bekommt ein 
einzelnes Zeichen zugeschickt und gibt dieses aus
{



    while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich */
    {
    }

    UDR = c;                      /* sende Zeichen */
    return 0;
}





int main(void)
{




   uart_init();



fdevopen (uart_putchar, NULL,0);

  int a= 5,b =8;
  double i=5.0/8.0 ;






  printf ("%d x %d = %d",a,b,a*b  );
  printf ( "\r\n" );
  printf ("%d durch %d = %d",a,b,a/b  );
  printf ( "\r\n" );

  printf ("%d durch %d = %4.2f",a,b,i  );    //  funktioniert so noch 
nicht, nur Fragezeichen
  printf ( "\r\n" );





   while (1)
    {
      ;
   }

return 0;
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren