Formatowanie wczytywania scanf

0

Cześć mam problem robię kalkulator liczb zespolonych, program ma przyjmować dane w takiej postaci

24.627593+i77.449112

Próbuje wczytać w następujący sposób

 scanf("%f%c%[^ij]f",&real,&tmp,&imagine);

Jednak zmienna imagine pozostaje zerem

0

W C jest typ liczb zespolonych: https://en.wikipedia.org/wiki/Complex.h

1
 sscanf(input, "%f+%*1[ij]%f",&re, &im);
1

Ten fragment jest zły: %[^ij]f i kompilator na pewno cię o tym ostrzega.
Ten format string oznacza wczytaj napis zawierający wszystko poza i lub j a potem wczytaj literę f.

pewnie miało być:

float real, imagine;
char signBuff[2];
int count = scanf("%f %1[+-] %*1[ij]%f", &real, signBuff, &imagine);
if (cout == 3) {
    // wczytano pełną liczbę urojoną
} else if (count == 1) {
    // wczytano liczbę rzeczywistą
} else if (count == 2) {
    // błąd: bo napis wygląda np tak: 313-23
} else {
    // błąd nic nie wczytano.
}

Po kolei:

  • wczytaj float
  • pomiń białe znaki
  • wczytaj jeden znak napisu + lub -
  • pomiń białe znaki
  • wczytaj jeden znak napisu i lub j i go zignoruj
  • wczytaj float

Wszystko jest opisane np tu

1 użytkowników online, w tym zalogowanych: 0, gości: 1