Printf (jazyk C): Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „{{Funkcie jazyka c}} __NOTOC__ ==Funkcia system== <properties> knižnica=stdio.h popis=Vypíše dáta na monitor </properties> Úplný funkčný prototyp: <source lang…“)
 
 
(10 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených)
Riadok 1: Riadok 1:
 
{{Funkcie jazyka c}}
 
{{Funkcie jazyka c}}
 
__NOTOC__
 
__NOTOC__
==Funkcia system==
+
==Funkcia printf==
 
<properties>
 
<properties>
 
knižnica=stdio.h  
 
knižnica=stdio.h  
Riadok 11: Riadok 11:
 
int printf(const char *format, ...);
 
int printf(const char *format, ...);
 
</source>
 
</source>
 +
 
==Podrobný popis funkcie==
 
==Podrobný popis funkcie==
Táto funkcia vypíše dáta na monitor (do štandardizovaného výstupu stdout) z rôznych typov premenných: int, char, char[], byte, float, double,...
+
Táto funkcia vypíše dáta na monitor (do štandardizovaného výstupu ''stdout'') z rôznych typov premenných: ''int'', ''char'', ''char[]'', ''byte'', ''float'', ''double'',...
  
 
==Parametre==
 
==Parametre==
;format:  formát vypísaných dát. Tabuľka formátovacích znakov je nižšie.
+
;''format'':  formát vypísaných dát. Tabuľka formátovacích znakov je nižšie.
;...:  ďalšie premenné, ktoré sú použité vo formáte.  
+
;''...'':  ďalšie premenné, ktoré sú použité vo formáte.  
 +
 
 +
'''Tvar formátu:''' ''%[flags][šírka][.presnosť][dĺžka]formátovací znak'' (''[]'' označujú, že daný špecifikátor je voliteľný)
  
 
Tabuľka formátovacích znakov:
 
Tabuľka formátovacích znakov:
Riadok 22: Riadok 25:
 
! formátovací znak !! Výstup !! Príklad
 
! formátovací znak !! Výstup !! Príklad
 
|-
 
|-
| d alebo i || Celé dekadické číslo (napr. int) || 392
+
! ''d'' alebo ''i''
 +
| Celé dekadické číslo (napr. ''int'') || 392
 +
|-
 +
! ''u''
 +
| Prirodzené dekadické číslo (napr. ''unsigned int'') || 7235
 +
|-
 +
! ''o''
 +
| Prirodzené oktagonálne číslo (osmičková sústava) || 610
 +
|-
 +
! ''x''
 +
| Prirodzené hexadecimálne číslo || 7fa
 +
|-
 +
! ''X''
 +
| Prirodzené hexadecimálne číslo (veľké písmená) || 7FA
 +
|-
 +
! ''f''
 +
| Racionálne číslo, malé písmená || 392.65
 +
|-
 +
! ''F''
 +
| Racionálne číslo, veľké písmená || 392.65
 +
|-
 +
! ''e''
 +
| Vedecký zápis (mantissa/exponent), malé písmená || 3.9265e+2
 +
|-
 +
! ''E''
 +
| Vedecký zápis (mantissa/exponent), veľké písmená || 3.9265E+2
 +
|-
 +
! ''g''
 +
| Použije kratší zápis: ''%''e or ''%f'' || 392.65
 
|-
 
|-
| u || Prirodzené dekadické číslo (napr. unsigned int) || 7235
+
! ''G''
 +
| Použije kratší zápis: ''%E'' or ''%F'' || 392.65
 
|-
 
|-
| o || Prirodzené oktagonálne číslo (osmičková sústava) || 610
+
! ''a''
 +
| Hexadecimálne racionálne číslo, malé písmená || -0xc.90fep-2
 
|-
 
|-
| x || Prirodzené hexadecimálne číslo || 7fa
+
! ''A''
 +
| Hexadecimálne racionálne číslo, veľké písmená || -0XC.90FEP-2
 
|-
 
|-
| X || Prirodzené hexadecimálne číslo (veľké písmená) || 7FA
+
! ''c''
 +
| Znak || a
 
|-
 
|-
| f || Racionálne číslo, malé písmená || 392.65
+
! ''s''
 +
| Textový reťazec || priklad
 
|-
 
|-
| F || Racionálne číslo, veľké písmená || 392.65
+
! ''p''
 +
| Adresa smerníka || b8000000
 
|-
 
|-
| e || Vedecký zápis (mantissa/exponent), malé písmená || 3.9265e+2
+
! ''n''
 +
| Nič nevypíše. Zodpovedajúci argument musí byť smerníkom na signed int.
 +
Počet doteraz napísaných znakov sa potom uloží na toto miesto. || &nbsp
 
|-
 
|-
| E || Vedecký zápis (mantissa/exponent), veľké písmená || 3.9265E+2
+
! ''%''
 +
| ''%'' nasledované ďalším ''%'' vypíše iba jedno ''%''. || %
 +
|}
 +
 
 +
{| class="wikitable"
 +
! flags !! Popis
 
|-
 
|-
| g || Použije kratší zápis: %e or %f || 392.65
+
! ''<nowiki>-</nowiki>''
 +
| Zarovnať vľavo v rámci danej šírky poľa; Predvolené je zarovnanie napravo (pozri špecifikátor ''šírky'').
 
|-
 
|-
| G || Použije kratší zápis: %E or %F || 392.65
+
! ''<nowiki>+</nowiki>''
 +
| Vynúti vypísanie znamienka plus alebo mínus (+ alebo -) pred hodnotu aj pre kladné čísla. V predvolenom nastavení sú pred záporným znamienkom iba záporné čísla.
 
|-
 
|-
| a || Hexadecimálne racionálne číslo, malé písmená || -0xc.90fep-2
+
! ''(medzera)''
 +
| Ak sa nebude vypisovať žiadne znamienko, pred hodnotu sa vloží medzera.
 
|-
 
|-
| A || Hexadecimálne racionálne číslo, veľké písmená || -0XC.90FEP-2
+
! ''#''
 +
| Pri použití so špecifikátormi o, x alebo X sa pre hodnotami inými ako nula vypíše hodnota ''0'', ''0x'' alebo ''0X''. Pri použití s ​​písmenami A, e, E, f, F, g alebo G vypísaná hodnota bude obsahovať desatinnú čiarku, aj keď už nebudú nasledovať ďalšie číslice. V predvolenom nastavení, ak nenasledujú žiadne číslice, nevypisuje sa desatinná čiarka.
 
|-
 
|-
| c || Znak || a
+
! ''0''
 +
| Číslo bude zľava odsadené nulami, nie medzerami ako je predvolené (pozri špecifikátor ''šírky'').
 +
|}
 +
 
 +
{| class="wikitable"
 +
! šírka !! Popis
 
|-
 
|-
| s || Textový reťazec || priklad
+
! ''(číslo)''
 +
| Minimálny počet vypísaných znakov. Ak je výstupná hodnota, menšia ako toto číslo, text je zľava odsadený medzerami. Hodnota nie je orezaná, aj keď je vypísaný výsledok väčší.
 
|-
 
|-
| p || Adresa smerníka || b8000000
+
! ''*''
 +
| Šírka nie je zadaná vo formátovacom texte, ale ako dodatočný celočíselný argument predchádzajúci argumentu, ktorý sa musí naformátovať.
 +
|}
 +
 
 +
{| class="wikitable"
 +
! .presnosť !! Popis
 
|-
 
|-
| n || Nič nevypíše. Zodpovedajúci argument musí byť smerníkom na signed int.
+
! ''.číslo''
Počet doteraz napísaných znakov sa potom uloží na toto miesto. ||
+
| "Pre celé čísla (''d'', ''i'', ''o'', ''u'', ''x'', ''X''): presnosť určuje minimálny počet číslic, ktoré sa majú vypísať. Ak je hodnota, ktorá sa má vypísať, kratšia ako toto číslo, výsledok je vyplnený nulami. Hodnota nie je orezaná, aj keď je výsledok dlhší. Presnosť 0 znamená, že pre hodnotu 0 nie je vypísaný žiaden znak. Pre formátovacie znaky ''a'', ''A'', ''e'', ''E'', ''f'' a ''F'': toto je počet číslic, ktoré sa majú vypísať '''za''' desatinnou čiarkou (štandardne je to 6). Pre formátovacie znaky ''g'' a ''G'' je toto číslo maximálny počet platných číslic, ktoré sa majú vypísať. Pre ''s'' je toto číslo maximálny počet znakov, ktoré sa majú vypísať. V predvolenom nastavení sa všetky znaky vypisujú, až kým až po ukončovací nulový znak. Ak je presnosť zadaná bez explicitnej hodnoty presnosti, prednastavená hodnota je 0.
 
|-
 
|-
| % || % nasledované ďalším % vypíše iba jedno %. || %
+
! ''.*''
 +
| Presnosť nie je uvedená vo formátovacom texte, ale ako dodatočný celočíselný argument predchádzajúci argumentu, ktorý sa musí naformátovať.
 
|}
 
|}
  
Riadok 91: Riadok 151:
 
|  ||  || long double ||  ||  ||  ||  
 
|  ||  || long double ||  ||  ||  ||  
 
|}
 
|}
 +
<ref>http://www.cplusplus.com/reference/cstdio/printf/</ref>
  
 
==Návratová hodnota==
 
==Návratová hodnota==
Riadok 96: Riadok 157:
 
Po úspechu sa vráti celkový počet vypísaných znakov.
 
Po úspechu sa vráti celkový počet vypísaných znakov.
  
Ak nastala chyba počas zápisu, indikátor chyby (ferror) je zapísaný a následne je vrátené záporné číslo označujúce chybu.
+
Ak nastala chyba počas zápisu, indikátor chyby (''ferror'') je zapísaný a následne je vrátené záporné číslo označujúce chybu.<ref>https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm</ref>
  
 
==Príklad==
 
==Príklad==
Riadok 104: Riadok 165:
 
int main()
 
int main()
 
{
 
{
printf("TEXT\n"); //vypíše len text a nový riadok
+
printf("TEXT\n");                               //vypíše len text a nový riadok
 
char text[] = "Text2";
 
char text[] = "Text2";
printf("Toto je text: %s\n", text); //vypíše sa text "Toto je text: ", pole znakov a nový riadok
+
printf("Toto je text: %s\n", text);             //vypíše sa text "Toto je text: ", pole znakov a nový riadok
printf("Toto je znak %c\n", 'a'); //Vypíše sa text "Toto je znak ", znak 'a' a nový riadok
+
printf("Toto je znak %c\n", 'a');               //Vypíše sa text "Toto je znak ", znak 'a' a nový riadok
 
printf("Toto je cislo znaku v ASCII %d\n", 'a'); //Vypíše sa text "Toto je číslo znaku v ASCII ", číslo znaku 'a' v ASCII a nový riadok
 
printf("Toto je cislo znaku v ASCII %d\n", 'a'); //Vypíše sa text "Toto je číslo znaku v ASCII ", číslo znaku 'a' v ASCII a nový riadok
printf("%d\n",25); //Vypíše sa číslo 25 a nový riadok
+
printf("%d\n",25);                               //Vypíše sa číslo 25 a nový riadok
printf("Toto je cislo %d", 9); //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 9
+
printf("Toto je cislo %d", 9);                   //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 9
printf("\n"); //Vypíše sa nový riadok
+
printf("\n");                                   //Vypíše sa nový riadok
printf("Toto je cislo %10d", 18); //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 18 s počtom znakov 10 (pred číslom bude 8 medzier + 1 ktorá je zadaná v texte)
+
printf("Toto je cislo %10d\n", 18);             //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 18 s počtom znakov 10 (pred číslom bude 8 medzier + 1 ktorá je zadaná v texte)
printf("\n"); //Vypíše sa nový riadok
+
printf("Toto je cislo %010d\n", 20);             //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 20 s počtom znakov 10 (pred číslom bude 8 núl)
printf("Toto je cislo %010d", 20); //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 20 s počtom znakov 10 (pred číslom bude 8 núl)
 
printf("\n"); //Vypíše sa nový riadok
 
 
printf("Desatinne cislo: %4.2f %+.0e %E\n", 3.146, 3.146, 3.146); //Vypíše sa text "Desatinne cislo: " za ním desatinné číslo s dvomi ciframi pred čiarkou a so štyrmi za.
 
printf("Desatinne cislo: %4.2f %+.0e %E\n", 3.146, 3.146, 3.146); //Vypíše sa text "Desatinne cislo: " za ním desatinné číslo s dvomi ciframi pred čiarkou a so štyrmi za.
  //Za ním nasleduje medzera a číslo v tvare +3e+000, za ním medzera a číslo v tvare 3.141600E+000 a na konci nový riadok
+
                                                    //Za ním nasleduje medzera a číslo v tvare +3e+000, za ním medzera a číslo v tvare 3.141600E+000 a na konci nový riadok
 
 
 
return 0;
 
return 0;
 
}
 
}
  
 
</source>
 
</source>
Výstup:
+
''Výstup:''
 
  TEXT
 
  TEXT
 
  Toto je text: Text2
 
  Toto je text: Text2
Riadok 133: Riadok 191:
 
  Toto je cislo 0000000020
 
  Toto je cislo 0000000020
 
  Desatinne cislo: 3.15 +3e+00 3.146000E+00
 
  Desatinne cislo: 3.15 +3e+00 3.146000E+00
 +
 +
==Referencie==

Aktuálna revízia z 23:15, 19. máj 2020

Rozdelenie funkcií jazyka C podľa knižníc, v ktorých sú definované
<ctype.h> <limits.h> <stdio.h> <stdlib.h> <math.h> <string.h> <time.h>

isalnum
isalpha
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit

printf
scanf
getc
putc
getchar
putchar
fprintf
fscanf
fgetc
fputc
fopen
fclose
feof

system
malloc
qsort
rand
srand
atoi
atol
atof
itoa
div
abs
labs

pow
fabs
exp
log
log10
sqrt
ceil
sin
cos

strlen
strcmp
strchr
strcpy
strstr
strcat
strncat

clock
time

Funkcia printf

knižnica

stdio.h

popis

Vypíše dáta na monitor


Úplný funkčný prototyp:

int printf(const char *format, ...);

Podrobný popis funkcie

Táto funkcia vypíše dáta na monitor (do štandardizovaného výstupu stdout) z rôznych typov premenných: int, char, char[], byte, float, double,...

Parametre

format
formát vypísaných dát. Tabuľka formátovacích znakov je nižšie.
...
ďalšie premenné, ktoré sú použité vo formáte.

Tvar formátu: %[flags][šírka][.presnosť][dĺžka]formátovací znak ([] označujú, že daný špecifikátor je voliteľný)

Tabuľka formátovacích znakov:

formátovací znak Výstup Príklad
d alebo i Celé dekadické číslo (napr. int) 392
u Prirodzené dekadické číslo (napr. unsigned int) 7235
o Prirodzené oktagonálne číslo (osmičková sústava) 610
x Prirodzené hexadecimálne číslo 7fa
X Prirodzené hexadecimálne číslo (veľké písmená) 7FA
f Racionálne číslo, malé písmená 392.65
F Racionálne číslo, veľké písmená 392.65
e Vedecký zápis (mantissa/exponent), malé písmená 3.9265e+2
E Vedecký zápis (mantissa/exponent), veľké písmená 3.9265E+2
g Použije kratší zápis: %e or %f 392.65
G Použije kratší zápis: %E or %F 392.65
a Hexadecimálne racionálne číslo, malé písmená -0xc.90fep-2
A Hexadecimálne racionálne číslo, veľké písmená -0XC.90FEP-2
c Znak a
s Textový reťazec priklad
p Adresa smerníka b8000000
n Nič nevypíše. Zodpovedajúci argument musí byť smerníkom na signed int.

Počet doteraz napísaných znakov sa potom uloží na toto miesto. || &nbsp

% % nasledované ďalším % vypíše iba jedno %. %
flags Popis
- Zarovnať vľavo v rámci danej šírky poľa; Predvolené je zarovnanie napravo (pozri špecifikátor šírky).
+ Vynúti vypísanie znamienka plus alebo mínus (+ alebo -) pred hodnotu aj pre kladné čísla. V predvolenom nastavení sú pred záporným znamienkom iba záporné čísla.
(medzera) Ak sa nebude vypisovať žiadne znamienko, pred hodnotu sa vloží medzera.
# Pri použití so špecifikátormi o, x alebo X sa pre hodnotami inými ako nula vypíše hodnota 0, 0x alebo 0X. Pri použití s ​​písmenami A, e, E, f, F, g alebo G vypísaná hodnota bude obsahovať desatinnú čiarku, aj keď už nebudú nasledovať ďalšie číslice. V predvolenom nastavení, ak nenasledujú žiadne číslice, nevypisuje sa desatinná čiarka.
0 Číslo bude zľava odsadené nulami, nie medzerami ako je predvolené (pozri špecifikátor šírky).
šírka Popis
(číslo) Minimálny počet vypísaných znakov. Ak je výstupná hodnota, menšia ako toto číslo, text je zľava odsadený medzerami. Hodnota nie je orezaná, aj keď je vypísaný výsledok väčší.
* Šírka nie je zadaná vo formátovacom texte, ale ako dodatočný celočíselný argument predchádzajúci argumentu, ktorý sa musí naformátovať.
.presnosť Popis
.číslo "Pre celé čísla (d, i, o, u, x, X): presnosť určuje minimálny počet číslic, ktoré sa majú vypísať. Ak je hodnota, ktorá sa má vypísať, kratšia ako toto číslo, výsledok je vyplnený nulami. Hodnota nie je orezaná, aj keď je výsledok dlhší. Presnosť 0 znamená, že pre hodnotu 0 nie je vypísaný žiaden znak. Pre formátovacie znaky a, A, e, E, f a F: toto je počet číslic, ktoré sa majú vypísať za desatinnou čiarkou (štandardne je to 6). Pre formátovacie znaky g a G je toto číslo maximálny počet platných číslic, ktoré sa majú vypísať. Pre s je toto číslo maximálny počet znakov, ktoré sa majú vypísať. V predvolenom nastavení sa všetky znaky vypisujú, až kým až po ukončovací nulový znak. Ak je presnosť zadaná bez explicitnej hodnoty presnosti, prednastavená hodnota je 0.
.* Presnosť nie je uvedená vo formátovacom texte, ale ako dodatočný celočíselný argument predchádzajúci argumentu, ktorý sa musí naformátovať.

Tabuľka použitia premenných a formátovacích znakov:

dĺžka d i u o x X f F e E g G a A c s p n
(žiadna) int unsigned int double int char* void* int*
hh signed char unsigned char signed char*
h short int unsigned short int short int*
l long int unsigned long int wint_t wchar_t* long int*
ll long long int unsigned long long int long long int*
j intmax_t uintmax_t intmax_t*
z size_t size_t size_t*
t ptrdiff_t ptrdiff_t ptrdiff_t*
L long double

[1]

Návratová hodnota

Po úspechu sa vráti celkový počet vypísaných znakov.

Ak nastala chyba počas zápisu, indikátor chyby (ferror) je zapísaný a následne je vrátené záporné číslo označujúce chybu.[2]

Príklad

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5 	printf("TEXT\n");                                //vypíše len text a nový riadok
 6 	char text[] = "Text2";
 7 	printf("Toto je text: %s\n", text);              //vypíše sa text "Toto je text: ", pole znakov a nový riadok
 8 	printf("Toto je znak %c\n", 'a');                //Vypíše sa text "Toto je znak ", znak 'a' a nový riadok
 9 	printf("Toto je cislo znaku v ASCII %d\n", 'a'); //Vypíše sa text "Toto je číslo znaku v ASCII ", číslo znaku 'a' v ASCII a nový riadok
10 	printf("%d\n",25);                               //Vypíše sa číslo 25 a nový riadok
11 	printf("Toto je cislo %d", 9);                   //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 9
12 	printf("\n");                                    //Vypíše sa nový riadok
13 	printf("Toto je cislo %10d\n", 18);              //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 18 s počtom znakov 10 (pred číslom bude 8 medzier + 1 ktorá je zadaná v texte)
14 	printf("Toto je cislo %010d\n", 20);             //Vypíše sa text "Toto je číslo " a za ním sa vypíše číslo 20 s počtom znakov 10 (pred číslom bude 8 núl)
15 	printf("Desatinne cislo: %4.2f %+.0e %E\n", 3.146, 3.146, 3.146); //Vypíše sa text "Desatinne cislo: " za ním desatinné číslo s dvomi ciframi pred čiarkou a so štyrmi za.
16                                                      //Za ním nasleduje medzera a číslo v tvare +3e+000, za ním medzera a číslo v tvare 3.141600E+000 a na konci nový riadok
17 	return 0;
18 }

Výstup:

TEXT
Toto je text: Text2
Toto je znak a
Toto je cislo znaku v ASCII 97
25
Toto je cislo 9
Toto je cislo         18
Toto je cislo 0000000020
Desatinne cislo: 3.15 +3e+00 3.146000E+00

Referencie