Variable Eingabe (in C)

Moderator #2044157
Lesenswert?

Man man davon ausgehen kann, dass der Benutzer die Zahl syntaktisch
richtig eingibt, geht folgendes:
1
#include <stdio.h>
2
#include <math.h>
3

4
int x;
5

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

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

15
  if(grad < 0) {
16
    grad = - grad;
17
    vz = -1;
18
  }
19

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

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

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

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