Knihovny stdarg.h a limits.h

Knihovna stdarg.h

Tato knihovna slouží funkcím s proměnlivým počtem argumentů. Popis maker, které obsahuje a jejich použití je probráno v kapitole o proměnlivém počtu argumentů.

Funkce vprintf()

Funkce vprintf() dělá to samé co printf(), jen má trochu jiné argumenty.

int vprintf(const char *format, va_list ap);

Tahle funkce se vám bude hodit, když budete chtít napsat podobnou funkci jako printf() s proměnlivým počtem argumentů.

  1. /*------------------------------------------------*/
  2. /* c23/vprintf1.c                                 */
  3.  
  4. #include <stdio.h>
  5. #include <stdarg.h>
  6.  
  7. int printf_v_ramecku(const char *format, ...)
  8. {
  9.         int n;
  10.         va_list ap;
  11.         va_start(ap, format);
  12.         printf("***********************************\n");
  13.         printf("* ");
  14.         n = vprintf(format, ap);
  15.         printf(" *\n");
  16.         printf("***********************************\n");
  17.         va_end(ap);
  18.         return n;
  19. }
  20.  
  21. int main(void) {
  22.         (void) printf_v_ramecku("%s %5.5f", "Hello world!",1.0/3);
  23.         return 0;
  24. }
  25.  
  26. /*------------------------------------------------*/

Výstup v programu:

***********************************
* Hello world! 0.33333 *
***********************************

Existují ještě funkce vsprintf() a vsnprintf(), které jsou obdobou funkcí sprintf() a snprintf().

Knihovna limits.h

Knihovna <limits.h> obsahuje makra určující rozsah hodnot celočíselných datových typů. Tyto makra lze použít i v preprocesoru pro podmíněný překlad, jinak se nejčastěji používají v podmínkách programu. Hodnoty, které vidíte v tabulce, jsou jen orientační a v různých implementacích překladačů se liší (jinak by snad ani neměli význam). Například INT_MAX je pro 16bitové překladače 32767 a pro 32bitové 2147483647. Makra začínající písmenem U jsou pro čísla unsigned (čísla bez znaménka, např UINT_MAX. Jde vždy o hodnotu MAX, protože MIN je u čísel bez znaménka pochopitelně 0 (např. UINT_MIN není definováno)).

Konstanty z knihovny <limits.h>
Makro Hodnota Význam
CHAR_BIT 8 Počet bitů v datovém typu char.
SCHAR_MIN -128 Minimální hodnota typu signed char (typ char se znaménkem).
SCHAR_MAX 127 Maximální hodnota typu signed char
UCHAR_MAX 255 Maximální hodnota typu unsigned char
SHRT_MIN -32768 Minimální hodnota typu signed short int (krátké celé číslo se znaménkem)
SHRT_MAX 32767 Maximální hodnota typu signed short int
USHRT_MAX 65535 Maximální hodnota typu unsigned short int
INT_MIN (-INT_MAX -1) Minimální hodnota typu signed int
INT_MAX 2147483647 Maximální hodnota typu signed int
UINT_MAX 4294967295U Maximální hodnota typu unsigned int
LONG_MAX 2147483647L  
LONG_MIN (-LONG_MAX - 1L)  
ULONG_MAX 4294967295UL  
Komentář Hlášení chyby
Created: 29.8.2003
Last updated: 28.8.2014
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..