mikrocontroller.net

Forum: PC-Programmierung Variable Eingabe (in C)


Autor: R. M. (rma)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Wie kann ich in C möglichst einfach mehrere Sachen abfragen

mögliche Eingaben:

- Grad:Min:Sek (17:18:19)
- Grad:Min     (17:18)
- Grad,        (17,18)
- Grad         (17)

kann ich diese mit dem scanf Befehl irgendewie verodern?

Ich danke im voraus für eure Hilfe
rma

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man man davon ausgehen kann, dass der Benutzer die Zahl syntaktisch
richtig eingibt, geht folgendes:
#include <stdio.h>
#include <math.h>

int x;

int main(void) {
  char zeile[20];
  int grad=0, min=0, sek=0, nks=0, i1=0, i2=0, vz=1, n1, n2;
  double winkel;

  fgets(zeile, sizeof zeile, stdin);
  n1 = sscanf(zeile, "%d:%d:%d", &grad, &min, &sek);
  n2 = sscanf(zeile, "%*d,%n%d%n", &i1, &nks, &i2);

  if(grad < 0) {
    grad = - grad;
    vz = -1;
  }

  if(n1 > n2)
    winkel = grad + min/60. + sek/3600.;
  else
    winkel = grad + nks * pow(10., i1-i2);
  winkel *= vz;

  printf("%f\n", winkel);
}

Generell ist es aber besser, die Eingabe Zeichen für Zeichen nach
Fehlern abzuprüfen, bspw.mit einem Regexparser.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.