[itk] Számítástechnika kezdőknek

C++ programozás kezdőknek - alaptípusú változók kezelése C nyelvből örökölt függvényekkel

[2020. december 27.] [ christo161 ]

Ebben a tananyagban túlnyomórészt nem használunk C nyelvből örökölt függvényeket változók értékeinek a kiíratásához, de mivel mások kódjában találkozhatunk velük, így talán érdemes lehet tudni a létezésükről.

Előző tananyagrész: változók, konstansok, literálok
Következő tananyagrész: alaptípusok

A guidelineok, coding standardok általában nem javasolják a C nyelvből örökölt függvények használatát C++ programok forráskódjában:

Változók értékének kiíratása C nyelvből megörökölt függvényekkel

Bár egy Hello World! string literál kiíratása viszonylag egyszerű printf segítségével (printf("Hello World!");), a változók értékeinek kiíratásához úgynevezett format specifierek használata szükséges a különböző típusú változók esetén. Ebben a tananyagban nem fogom ismertetni az összes format specifiert, csak a legáltalánosabbakat. Az interneten számtalan összesítő táblázatot lehet találni róluk. Például: cplusplus.com - printf

A printf függvény paramétereinek a száma attól függ, hogy hány változó értékét szeretnénk kiíratni egyetlen utasításon belül. Az első paraméter egy string literál, amelyben a format specifierek határozzák meg a további paraméterekként megadott változók értékének helyét a szövegben. Ha a variable1 nevű változó karakter típusú, a variable2 nevű változó pedig int típusú, akkor a printf függvény segítségével például így írathatjuk ki az értékeiket:

printf("variable1 erteke: %c, variable2 erteke: %d \n", variable1, variable2);

Az fprintf függvény is hasonlóan működik, de azt általában fájlba történő íráshoz szoktuk használni. A standard outputra történő kiíratáshoz így használhatjuk:

fprintf(stdout, "variable1 erteke: %c, variable2 erteke: %d \n", variable1, variable2);

Egy karakter típusú változó értékének kiíratása printf függvénnyel:

printf('Egy char tipusu valtozo erteke: %c \n", valtozo_neve);

Egy int típusú változó értékének kiíratása printf függvénnyel:

printf("Egy int tipusu valtozo erteke: %d \n", valtozo_neve);

Egy double típusú változó értékének kiíratása printf függvénnyel:

printf("Egy double tipusu valtozo erteke: %lf \n", valtozo_neve);

Mivel a C nyelvben nincs std::string, így az std::string típusú változók értékét csak akkor tudjuk printf függvény segítségével kiíratni, ha átalakítjuk őket úgynevezett C stringekké (karaktertömbökké). Ezt a c_str() tagfüggvénnyel tehetjük meg.

printf("Egy std::string tipusu valtozo erteke: %s \n", valtozo_neve.c_str() );

std::string típusú változók értékét hasonlóan lehet kiíratni puts és fputs függvényekkel:

puts(valtozo_neve.c_str());
fputs(valtozo_neve.c_str(), stdout);

A puts egy sortörést is tesz a kiírt szöveg után.

A puts és fputs függvény alapvetően csak stringeket tud kiírni, persze át lehet alakítani az alaptípusú változókat std::string típusúvá, de egyrészt erről későbbi tananyagrészben szeretnék írni, másrészt ez így nem túl szép, hogy először átalakítunk egy alaptípusú változót std::stringgé, aztán pedig C stringgé.

//bad practice
#include <cstdio>
#include <string>

int main() {
  int variable1 = -128;
  fputs(std::to_string(variable1).c_str(), stdout);
}

Ehelyett printf vagy fprintf függvényeket használjunk, ha alaptípusú változók értékét szeretnénk kiíratni.

A nem megfelelő format specifierek használata undefined behaviourt okozhat. Például ha ezt a példaprogramot többször futtatjuk, előfordulhat, hogy mindig más érték íródik ki.

//undefined behavior
#include <cstdio>

int main() {
  double variable1 = 1.00007;
  printf("%d", variable1);
}

C-ből megörökölt függvények, amikkel változók értékét lehet bekérni a standard inputról

A C nyelvben a legismertebb függvény, amivel parancssorból tudunk változóknak értékeket bekérni a scanf. A printf-hez hasonlóan szintén ügyelnünk kell a format specifierekre, sőt alaptípusú változók esetén a változó neve elé egy & jelet is kell írnunk.

#include <cstdio>

int main() {
  printf("Kerem adjon meg egy egesz szamot:\n");
  int variable1;
  scanf("%d", &variable1);
  printf("variable1 erteke: %d", variable1);
}

Akár egyszerre két változó értékét is be tudjuk kérni:

#include <cstdio>

int main() {
  printf("Kerem adjon meg ket egesz szamot:\n");
  int variable1, variable2;
  scanf("%d%d", &variable1, &variable2);
  printf("variable1 erteke: %d, variable2 erteke: %d", variable1, variable2);
}

A témához kapcsolódnak még a sprintf, sscanf, fgets függvények, amikkel karaktertömböket lehet kezelni. Külön tananyagrész fog szólni róluk.

Egyéb tananyag

Előző tananyagrész: változók, konstansok, literálok
Következő tananyagrész: alaptípusok

A bejegyzés trackback címe:

https://itkezdoknek.blog.hu/api/trackback/id/tr716356650

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása