Bibliotecas de C - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Bibliotecas de C

Description:

Reutilizaci n de c digo hecho y probado. Acceso al Sistema Operativo ... math.h matem ticas sobre double. sin (x), cos (x), asin (x), acos (x), exp (x), log (x) ... – PowerPoint PPT presentation

Number of Views:99
Avg rating:3.0/5.0
Slides: 29
Provided by: juanc94
Category:
Tags: bibliotecas | dbl

less

Transcript and Presenter's Notes

Title: Bibliotecas de C


1
Bibliotecas de C
  • Juan C. Dueñas ltjcduenas_at_dit.upm.esgt
  • Depto Ingeniería de Sistemas Telemáticos
  • Universidad Politécnica de Madrid

2
Objetivos
  • Conocer las funciones proporcionadas por las
    bibliotecas de C
  • 1. Bibliotecas
  • 2. Flujos de E/S
  • 3. Memoria dinámica
  • 4. Otros elementos

3
Bibliotecas C
  • C es el ensamblador de UNIX
  • simple
  • sin E/S
  • sin concurrencia
  • sin soporte de tipos
  • Bibliotecas
  • Reutilización de código hecho y probado
  • Acceso al Sistema Operativo
  • A veces no son suficientes acceso al núcleo

4
Biblioteca estándar
  • ltassert.hgt macro assert
  • ltctype.hgt comprobación de caracteres
  • isalpha (c ), isdigit (c), tolower (c), toupper
    (c ), ...
  • lterrno.hgt variable errno
  • ltfloat.hgt representación real
  • ltlimits.hgt representación entera

5
Biblioteca estándar
  • ltlocale.hgt propiedades locales
  • ltmath.hgt matemáticas sobre double
  • sin (x), cos (x), asin (x), acos (x), exp (x),
    log (x), ...
  • ltsetjmp.hgt saltos sin retorno
  • ltsignal.hgt manejo de señales
  • ltstdarg.hgt funciones con nº var args
  • ltstddef.hgt tipos y macros generales

6
Biblioteca estándar
  • ltstdio.hgt E/S ficheros y flujos de datos
  • sscanf (s, fmt, ...), sprintf (s, fmt, ...)
  • ltstdlib.hgt utilidades varias
  • atoi (s), atof (s), ...
  • ltstring.hgt manejo de cadenas
  • strcpy (sd, so), strcmp (s1, s2), strcat (sd,
    so),
  • memcpy (md, mo, n), memcmp (m1, m2, n), bzero (m,
    n), ...
  • lttime.hgt representación de tiempos

7
Jerarquía E/S en UNIX
  • Dispositivos HW
  • interfaz manejadores de dispositivos
  • E/S básica núcleo de UNIX
  • interfaz descriptores de ficheros
  • E/S estándar
  • interfaz stdio
  • E/S pantalla
  • interfaz curses

8
E/S estándar
  • ltstdio.hgt
  • Caracteres
  • int putchar (int)
  • int getchar (void) / EOF /
  • Cadenas
  • int puts (char s)
  • char gets (char)

9
Formatos de E/S
  • Formato
  • int printf (char s, ...)
  • int scanf (char s,...) printf ( hola\n)
  • printf (el valor de i es d\n, i)
  • printf (pi 7.5f\n, 4atan(1.0))
  • scanf (d s lx, i, vector, l)

10
Formatos
  • d decimal
  • o octal
  • x hexadecimal
  • u decimal sin signo
  • c carácter
  • s cadena
  • f coma fija
  • e mantisa y exponente
  • g f o e (lo mejor)

11
E/S de flujos
  • El tipo FILE representa un flujo de información,
    tanto entrada como salida
  • Preabiertos
  • stdin
  • stdout
  • stderr

12
Operaciones con flujos
  • FILE fopen ( const char filename,
    const char mode)
  • r, w, a, r, w, a, rb, wb, ab, ...
  • int fclose (FILE)
  • int fflush (FILE)

13
E/S estándar de flujos
  • Caracteres
  • int putc (int, FILE)
  • int getc (FILE)
  • int ungetc (int, FILE)
  • Cadenas
  • int fputs (char s, FILE)
  • char fgets (char, int, FILE)

14
E/S estándar de flujos
  • Formato
  • int fprintf (FILE, char s, ...)
  • int fscanf (FILE, char s,...)

15
Memoria dinámica
  • ltstdlib.hgt
  • Gestión explícita por el programador de la
    memoria dinámica (punteros)
  • Cuidado !

16
Memoria dinámica
  • Múltiples problemas
  • aliases
  • pérdidas de memoria
  • acceso a memoria liberada
  • violación de límites
  • violación de alineamiento
  • Bibliotecas que se superponen para detección de
    errores efence

17
Ciclo de vida de la memoria dinámica
  • Obtención de memoria
  • void calloc (size_t nelem, size_t longitud)
  • void malloc (size_t longitud)
  • Reubicación
  • void realloc (void ptr, size_t tamano)
  • Liberación
  • void free (void ptr)

18
Gestión de memoria
  • include ltstdlib.hgt
  • void malloc (size_t)
  • void free (void)
  • nodo p
  • ...
  • p malloc (sizeof (nodo))
  • ...
  • free (p)

19
Gestión de memoria
  • include ltstdlib.hgt
  • nodo p, q
  • ...
  • p calloc (10, sizeof (nodo))
  • ...
  • q realloc (p, sizeof (nodo) 8)
  • ...
  • free (q)

20
Saltos
  • ltsetjmp.hgt
  • Gestión explícita por el programador de los
    puntos de salto
  • Mecanismo no estructurado
  • Cuidado !

21
Saltos
  • Variable que guarda el estado del programa
  • jmp_buf estado
  • Función que guarda el estado en un punto
  • int setjmp (jmp_buf env)
  • Función que salta al estado guardado
  • void longjmp (jmp_buf env, int val)

22
Saltos
  • setjmp debe ejecutarse antes de longjmp
  • Cuando se ejecuta longjmp, se salta al lugar del
    último setjmp
  • setjmp devuelve
  • el valor val del longjmp
  • o 1 si el valor de longjmp es 0
  • No puede entrar a funciones

23
Otros
  • system
  • búsqueda
  • ordenación

24
Correspondencia de descriptores
FILE
int fileno (FILE)
int
_file
FILE fdopen (int desc, char modo)
25
E/S bajo nivel
  • estilo UNIX
  • identificadores abiertos
  • 0 stdin
  • 1 stdout
  • 2 stderr

26
Apertura y cierre
  • ltfcntl.hgt
  • int open (charname, int flags)
  • int open (charname, int flags, int mode)
  • O_RDONLY, O_WRONLY, O_RDWR,
  • O_APPEND, O_CREAT, O_TRUNC
  • int close (int)

27
Operaciones de bajo nivel
  • ltfcntl.hgt
  • int read (int fd, char buf, int pedidos)
  • int write (int fd, char buf, int pedidos)
  • extern int errno
  • extern void perror (char)

28
Copia a bajo nivel
  • ltunistd.hgt
  • include ltfcntl.hgt
  • define TAMANO 1024
  • char buf TAMANO
  • int main(int argc, char argv)
  • int leidos, escritos
  • int origen open (argv 1, O_RDONLY)
  • int destino open (argv 2, O_CREAT O_WRONLY
    O_TRUNC, 0777)
  • while (leidos read (origen, buf, TAMANO) gt 0)
  • escritos write (destino, buf, leidos)
  • exit (0)
Write a Comment
User Comments (0)
About PowerShow.com