Forum: PC-Programmierung scanf printf Ausgabe


von Michael H. (h_m)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Frage. Und zwar will ich mit meinem nachfolgenden Code vom 
H-Terminal eine Zahl. Zb. 12 einlesen, den Wert der Variable i zuweisen, 
dann wieder  den Wert von i geteilt durch 2 im Terminal wieder ausgeben.

Um das richtige Ergebnis zu erhalten muss ich zuerst die Zahl die ich 
teilen möchte eingeben. Und mit Enter bestätigen (Senden) dann passiert 
noch nichts, wenn ich jetzt erneut a eingebe und mit Enter Sende kommt 
das richtige Ergebnis im Received Data Fenster (BILD)

es sollte aber so sein, das ich 12 eingebe (Enter Senden) und danach 
automatisch das Ergebnis angezeigt wird.

Könnte mir Bitte jemand sagen was ich hier falsch mache ?
1
 
2
 #define F_CPU 16000000UL
3
 #define BAUD  9600UL
4
 
5
 #include <util/delay.h>
6
 #include <string.h>
7
 #include <stdlib.h>
8
 #include <stdio.h>
9
 #include <ctype.h>
10
 #include <avr/io.h>
11
 
12
 //Initialisierung und die Funktionen uart_putchar und art_getchar
13
 #include "serial2.h"
14
 
15
 //Eintrag von uart_putchar und uart_getchar als
16
 //Standard IO
17
 FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);
18
 
19
 int main(void)
20
 {
21
   
22
   
23
   //Initialisierung (aus serial2.h) aufrufen
24
   uart_init(F_CPU, BAUD);
25
   
26
   //Elementare IO Funktionen als Standard IO eintragen
27
   stdout = stdin = &mystdout;
28
   
29
  
30
    while (1) 
31
    {
32
    
33
  int i;
34
    
35
     printf("\r\nGeben Sie eine Zahl ein:     ");
36
     scanf("%d", &i); //&i ist die Adresse von i
37
     printf("\r\nDer halbe Wert ist %d", i / 2);
38
     _delay_ms(500);
39
    }
40
}

von Theor (Gast)


Lesenswert?

Ändere mal die Auswahl bei "Send on enter" in den "Input options" unten 
(über der Eingabezeile.

Das beeinflusst, was tatsächlich gesendet wird, wenn Du Enter drückst. 
Im Moment sendest Du wortwörtlich garnichts, so das scanf erst eine Zahl 
als vollständig akzeptiert, wenn Du ein Zeichen, das keine Dezimalziffer 
darstellt, sendest.

von Michael H. (h_m)


Lesenswert?

Danke funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.