math.h
definisce alcune costanti e le seguenti funzioni:
codice:

double acos(double x); 				//arcoseno  0-pi
double asin(double x);          		//arcseno   tra(-pi/2)-pi/2
double atan(double x);				//arctg      tra(-pi/2)-pi/2
double atan2(double y,double x);		//arctg(y/x) -pi e pi
double cabs(struct complex z); //valore assoluto di un numero complesso
double ceil(double x);				//trova l'intero piu'piccolo non < x (arrotonda)
double cos(double x);				//coseno -1 - 1
double cosh(double x);				//coseno iperbolico
double exp(double x);				//e alla x
double fabs(double x);				//valore assoluto di un float
double floor(double x);				//trova l'intero piu'grande non > x(tronca)
double fmod(double x,double y);			//x%y per i float
double frexp(double x,int *exp);		//divide un double in mantissa e esponente
long int labs(long int x);			//valore assoluto di un long
double ldexp(double x,int exp);			//x * 2 alla exp
double log(double x);				//logaritmo in base e
double log10(double x);				//logaritmo in base 10
double modf(double x,double *integer);		//spezza in intero e parte frazionaria
[B]double pow(double x,double y);			[B]//x alla y
double sin(double x);				//seno -1 - 1
double sinh(double x);				//seno iperbolico
double sqrt(double x);				//radice di x
double tan(double x);				//tangente di x sin(x)/cos(x)
double tanh(double x);                          //tangente iperbolica
setjmp.h
dichiara setjmp e longjmp oltre alla struttura jmp_buffer
setjmp setta un salto non locale
longjmp fa il salto non locale
_ESEMPIO_
codice:
#include <stdio.h>
#include <setjmp.h>
#include <stdlib.h>

void sub(jmp_buf);

int main(void)
{

   int value;
   jmp_buf jmp;

   value = setjmp(jmp);
   if (value != 0)
   {
      printf("Longjmp  a==> %d\n", value);
      exit(value);
   }
   printf("chiama la procedura... \n");
   sub(jmp);

   return 0;
}

void sub(jmp_buf jmp)
{
   longjmp(jmp,1);
}
signal.h
dichiara raise e signal oltre ad alcune costanti
void (*signal(int sig, void (*func) (int sig[,int subcode])))(int);
Signal viene innalzato da una eccezione o da raise.


int raise(int sig);
raise manda il segnale sig al programma
se funziona ritorna 0 altrimenti non zero.
se il programma ha installato l'handler del segnale
specificato da sig, l'handler sara' eseguito.
altrimenti si procedera con l'azione tipica

_esempio_
codice:
#include <signal.h>

int main(void)
{
   int a, b;

   a = 10;
   b = 0;
   if (b == 0)
   /* preempt divide by zero error */
      raise(SIGFPE);
   a = a / b;
   return 0;
}
stdarg.h
dichiara alcune macro per sapere quanti parametri sono passati ad una
funzione che accetta un numero variabile di parametri

void va_start(va_list ap, lastfix);
type va_arg(va_list ap, type);
void va_end(va_list ap);


_ESEMPIO_
codice:
void sum(char *msg, ...)
{
   int total = 0;
   va_list ap;
   int arg;
   va_start(ap, msg);
   while ((arg = va_arg(ap,int)) != 0) {
      total += arg;
   }
   printf(msg, total);
   va_end(ap);
}

int main(void) {
   sum("The total of 1+2+3+4 is %d\n", 1,2,3,4,0);
   return 0;
}
stddef.h
dichiara alcune costanti e tipi:
NULL null
ptrdiff_t differenza tra puntatori
size_t tipo per dimensione di oggetti di memoria
wchar_t wide character
stdio.h
oltre alle macro definisce le seguenti funzioni:
void clearerr(FILE *stream);
resetta un errore e l' EOF
codice:
#include <stdio.h>

int main(void)
{
   FILE *fp;
   char ch;

   /* apre un file in lettura */
   fp = fopen("DUMMY.FIL", "w");

   /* si forza un errore tentando di leggere dal file*/
   ch = fgetc(fp);
   printf("%c\n",ch);

   if (ferror(fp))
   {
      /*mostra un errore */
      printf("Error reading from DUMMY.FIL\n");

      /* resetta l'errore e l'EOF  */
      clearerr(fp);
   }

   fclose(fp);
   return 0;
}
int fclose(FILE *stream);
chiude un file torna 0 o EOF per errore.
int feof(FILE *stream);
ritorna non zero se si e' arrivati alla fine del file e 0 altrimenti
int ferror(FILE *stream);
ritorna non zero se si e' verificato un errore
int fflush(FILE *stream);
svuota il buffer nel file torna 0 se successo o EOF
int fgetpos(FILE *stream, fpos_t *pos);
ritorna la posizione nel file
FILE *fopen(const char *filename, const char *mode);
apre il file filename nella modalita' mode(vedi pillola sui file)
size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
legge da un file
_esempio_
codice:
#include <string.h>
#include <stdio.h>

int main(void)
{
   FILE *stream;
   char msg[] = "questo e un test";
   char buf[20];

   if ((stream = fopen("DUMMY.FIL", "w+"))
       == NULL)
   {
      fprintf(stderr, "file non aperto.\n");
      return 1;
   }

   /*scrive nel file*/
   fwrite(msg, strlen(msg)+1, 1, stream);

   /*si sposta all'inizio del file*/
   fseek(stream, SEEK_SET, 0);

   /*legge il dato e lo butta in output */
   fread(buf, strlen(msg)+1, 1, stream);
   printf("%s\n", buf);

   fclose(stream);
   return 0;
}
FILE *freopen(const char *filename, const char *mode, FILE *stream);
chiude il file stream,e riapre cambiandolo con filename nella modalita' mode
int fseek(FILE *stream, long offset, int whence);
sposta il puntatore di lettura/scrittura nel file(vedi pillola file)
int fsetpos(FILE *stream, const fpos_t *pos);
setta la posizione nel file dopo aver resettato l'EOF
long ftell(FILE *stream);
ritorna la posizione del puntatore nel file o -1L
size_t fwrite(const void *ptr, size_t size, size_t n, FILE*stream);
scrive nel file(pillola)
int fgetc(FILE *stream);
ritorna un carattere dal file
int fputc(int c, FILE *stream);
accoda un carattere nel file
int getc(FILE *stream);
legge un carattere da un file (macro)
int getchar(void);
macro che equivale a getc(stdin)
char *gets(char *s);
legge una riga (terminante con \n)da stdin
int putc(int c, FILE *stream);
accoda un carattere a un file(macro)
int putchar(int c);
macro che equivale a putch(c,stdout)
int puts(const char *s);
puts stampa una stringa sullo stdout
int remove(const char *filename);
cancella il file filename
_ESEMPIO_
codice:
#include <stdio.h>

int main(void)
{
   char file[80];

   /* prompt for file name to delete */
   printf("File to delete: ");
   gets(file);

   /* delete the file */
   if (remove(file) == 0)
      printf("Removed %s.\n",file);
   else
      perror("remove");

   return 0;
}
int rename(const char *oldname, const char *newname);
rinomina un file da oldname a newname
void rewind(FILE *stream);
equivale a fseek(*stream,0L,SEEK_SET) solo che cancella anche gli eventuali
errori verificatisi prima
void setbuf(FILE *stream, char *buf);
int setvbuf(FILE *stream, char *buf, int type, size_t size);
setbuf e setvbuf usano un buffer(*buf) per l' I/O ,
anziche' usare lo standard
FILE *tmpfile(void);
crea un file temporaneo.
_esempio_
codice:
#include <stdio.h>
int main(void)
{
   FILE *tempfp;

   tempfp = tmpfile();
   if (tempfp)
      printf("creato file temporaneo\n");
   else
   {
      printf("file temporaneo non creato\n");
      exit(1);
   }

   return 0;
}
char *tmpnam(char *sptr);
crea un nome di file temporaneo
_ESEMPIO_
codice:
int main(void)
{
   char name[13];

   tmpnam(name);
   printf("nome temporaneo ->> %s\n", name);
   return 0;
}
int fprintf (FILE *stream, const char *format [, argument, ...]);
come la printf ma su un file
int fscanf (FILE *stream, const char *format [, address, ...]);
come la scanf ma prende i dati da un file
int printf (const char *format [, argument, ...]);
stampa una stringa formattandola - vedi pillola
int scanf (const char *format [, address, ...]);
legge da un file.
int sprintf (char *buffer, const char *format [, argument, ...]);
come printf ma su una stringa
int sscanf (const char *buffer, const char *format [, address, ...]);
come scanf ma prende da una stringa
int vfprintf(FILE *stream, const char *format, va_list arglist);
come fprintf ma usando una lista di argomenti
_ESEMPIO_
codice:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

FILE *fp;

int vfpf(char *fmt, ...)
{
   va_list argptr;
   int cnt;

   va_start(argptr, fmt);
   cnt = vfprintf(fp, fmt, argptr);
   va_end(argptr);

   return(cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90.0;
   char string[4] = "abc";

   fp = tmpfile();
   if (fp == NULL)
   {
      perror("tmpfile() call");
      exit(1);
   }

   vfpf("%d %f %s", inumber, fnumber, string);
   rewind(fp);
   fscanf(fp,"%d %f %s", &inumber, &fnumber, string);
   printf("%d %f %s\n", inumber, fnumber, string);
   fclose(fp);

   return 0;
}
int vprintf (const char *format, va_list arglist);
come printf ma usando una lista di argomenti
_ESEMPIO_
codice:
#include <stdio.h>
#include <stdarg.h>

int vpf(char *fmt, ...)
{
   va_list argptr;
   int cnt;

   va_start(argptr, fmt);
   cnt = vprintf(fmt, argptr);
   va_end(argptr);

   return(cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90.0;
   char *string = "abc";

   vpf("%d %f %s\n",inumber,fnumber,string);

   return 0;
}
int vsprintf(char *buffer, const char *format, va_list arglist);
come vprintf ma su una stringa
int ungetc(int c, FILE *stream);
fa tornare un carattere nello stream
void perror(const char *s);
stampa l'ultimo errore prodotto in stderr