2016-04-16 3 views
0

Nach einigen Stunden der Suche konnte ich keine Antwort finden, aber wenn es sich um ein Duplikat handelt, zeigen Sie mir bitte in die richtige Richtung.Standardformular in C

Wird ein C-Programm eine Standardformulareingabe in so etwas wie scanf("%f",&float); von der Tastatur akzeptieren. Das Standardformular schreibt eine Nummer wie 2400 als 2.4E3, wenn das hilft, zu verstehen, was ich frage.

Ich muss betonen, dass dies von der Tastatur sein muss.

+0

Warum Sie nicht nur versuchen, es verpasst? Das hätte weniger Zeit gekostet als zu suchen, diese Frage zu posten und auf eine Antwort zu warten ... – DaoWen

+4

Weil es mir nicht sagt, ob es plattformunabhängig ist, daher die Frage. – Hobojoe

+0

Möchten Sie '2.4E3' akzeptieren und' 2400' ablehnen? Das ist überhaupt nicht klar aus Ihrer Frage, und es sollte sein. BTW, '2.4E3' heißt" wissenschaftliche Notation ", nicht" Standardform ". –

Antwort

2

Ja.

  1. scanf funktioniert identisch, unabhängig davon, ob stdin mit einem Anschluss verbunden ist, eine Datei oder einen anderen Eingabestrom.

  2. Die %a, %e, %f, %g Scanf Formatcodes alle das gleiche tun: die längste Zeichenfolge interpretieren, die akzeptabel wäre strtod (§ 7.21.6.2/12). (Dies gilt auch für %A, %E, und %G - Absatz 14 des gleichen Abschnitts.) Die Redundanz ist, weil scanf Formate die gleichen Formatcodes wie printf akzeptiert.

strtod übernimmt eine der folgenden (§ 7.22.1.3/3):

  • eine nicht leere Folge von Dezimalziffern optional ein Dezimalpunkt, wird ein optionalen Exponententeil enthält, wie definiert in 6.4.4.2;
  • a 0x oder 0X, dann eine nichtleere Folge von hexadezimalen Ziffern, die optional ein Dezimalpunktzeichen enthalten, dann ein optionaler binärer Exponententeil wie in 6.4.4.2 definiert;
  • INF oder INFINITY, Ignorieren Fall
  • NAN oder NAN (n-char-sequenceopt), ignorieren Fall im NAN-Teil, & hellip;
1

Ja, es von meinem Terminal akzeptiert und auch die IDEone Interpreter wird (hinzugefügt, um es in stdin, die die gleichen wie „von der Tastatur“ ist).

Und wahrscheinlich ein Tippfehler, aber Sie haben die "" in

scanf("%f", &float) 
+0

Ah ja das werde ich jetzt korrigieren, danke. – Hobojoe

+0

Und 'float' ist ein Schlüsselwort, der Name des Typs. Sie benötigen den Namen einer Variablen vom Typ 'float'. –

+0

Ja, es ist in meinem Code geändert, aber gut, dass Sie es für OP angegeben haben. – user8