Výpis čísla s pevnou délkou

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Výpis čísla s pevnou délkou

Příspěvek od Caster » 08 dub 2022, 12:31

Potřebuji vypisovat čísla s pevnou délkou (2), za číslem jedna mezera. Nechápu, v čem je problém:

Kód: Vybrat vše

int8_t dny[6] = {
  -1,
  3,
  12,
  14,
  16,
  47
};

void setup() {
  Serial.begin(115200);
  while (!Serial) { delay(10); }
  Serial.println("Test vypisu");
}

void loop() {
  for (int i = 0; i < 6; i++) {
    Serial.printf("%2d ", dny[i]);
  }
  Serial.println();
  for (int i = 0; i < 6; i++) {
    Serial.printf("%2d!", dny[i]);
  }
  Serial.println();
  Serial.end();
  exit(0);
}
Test vypisu
-1 3 12 14 16 47
-1! 3!12!14!16!47!

Bez vykřičníku není před číslicí "3" žádná mezera i když by tam jedna měla být ("%2d ")

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Výpis čísla s pevnou délkou

Příspěvek od AstroMiK » 08 dub 2022, 20:12

Mi to při kompilaci hlásí, že Serial.printf není implementováno.
'class HardwareSerial' has no member named 'printf';

Když se to ale zapíše "běžným způsobem" přes sprintf a pole znaků, tak to funguje podle očekávání a před trojkou se mezera (resp. dvě mezery) objeví:

Kód: Vybrat vše

Test vypisu
-1  3 12 14 16 47 
-1! 3!12!14!16!47!

Kód: Vybrat vše

int8_t dny[6] = {
  -1,
  3,
  12,
  14,
  16,
  47
};

char vystup[10];

void setup() {
  Serial.begin(115200);
  while (!Serial) { delay(10); }
  Serial.println("Test vypisu");
}

void loop() {
  for (int i = 0; i < 6; i++) {
    sprintf(vystup, "%2d ", dny[i]);
    Serial.print(vystup);
  }
  Serial.println();
  for (int i = 0; i < 6; i++) {
    sprintf(vystup, "%2d!", dny[i]);
    Serial.print(vystup);
  }
  Serial.println();
  Serial.end();
  exit(0);
}

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Výpis čísla s pevnou délkou

Příspěvek od Caster » 09 dub 2022, 01:39

Díky za radu, už jsem z toho byl hotový ;) .

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 26 hostů