Anda di halaman 1dari 38

La librería conio.

h
La librería conio.h no se considera parte de la biblioteca estándar de C, no obstante fue bastante
utilizada en su momento debido a las múltiples funciones para dar mejor presentación a los
programas. Ésta librería es originaria de los años 80 y su creadora fue la compañía Borland, la cual
es responsable del lanzamiento de múltiples compiladores de C.

¿Por qué es fuente de problemas y discrepancias? Pues principalmente porque al no pertenecer a


la biblioteca estándar de C y sólo viene integrada con compiladores Borland, hace que ciertos
códigos no sea posible compilarlos sin antes añadirá manualmente la librería.

Hay defensores y detractores de la librería conio.h, algunos la consideran de enorme utilidad para
dar mejor aspecto estético al programa, y otros que simplemente no ven necesario incorporar ésta
librería debido a la poca necesidad de enriquecer visualmente programas de consola, dado el
panorama y los entornos actuales.

Por otro lado está el detalle de que sólo es posible utilizarlos en entornos de MS-DOS, es
decir, Windows, y dada la cantidad de entornos y sistemas operativos actuales, muchos no ven
necesario seguir utilizando ésta librería. En caso de querer utilizarla en Linux es necesario seguir
unas instrucciones, las cuales quedan fuera del alcance de éste artículo.
La especificación de la librería es la siguiente:
La librería stdlib.h

La librería stdlib.h contiene muchas utilidades para los programadores, tales como la gestión de
memoria dinámica, la ordenación y búsqueda en arrays o el control de procesos.

La especificación de la librería es la siguiente:

Conversiones numéricas.
La librería ctype.h
Jugar con los caracteres dentro de un programa es una práctica de lo más habitual, a veces podemos
necesitar mostrar mayúsculas, minúsculas o pasar de una a otra o realizar operaciones simples con
caracteres.

Para eso existe la librería que hoy vamos a ver, ctype.h. Ésta librería se encarga de todo lo relacionado
a modificar y operar con caracteres, sin duda alguna muy útil a la hora de representar en pantalla y comprobar
información.

La especificación de la librería es la siguiente:


La librería wctype.h

El archivo de cabecera de la biblioteca estándar de C wctype.h sirve para clasificar mediante


funciones los caracteres anchos o para convertirlos a mayúsculas/ minúsculas.

Su especificación es la misma que en la cabecera ctype.h salvo que adaptado para poder operar
con caracteres anchos, a continuación os dejo una tabla de correspondencias entre unas
funciones y otras:
La librería wchar.h
El archivo de cabecera de la biblioteca estándar de C wchar.h sirve para manipular flujos de datos y
caracteres anchos. La necesidad de ésta cabecera surgió cuando había que soportar la manipulación de
caracteres de diferentes idiomas.

F
Las constantes son:

NULL
WCHAR_MIN
WCHAR_MAX
WEOF

Los tipos de datos son:

mbstate_t
size_t
wchar_t
wint_t

Las funciones son:


Cadenas de caracteres anchos:
La librería time.h
El archivo de cabecera de la biblioteca estándar de C time.h sirve para tratar fechas y horas y realizar
conversiones y operaciones.

Según Wikipedia la definición es la siguiente:

Funciones:
La librería tgmath.h
El archivo de cabecera de la biblioteca estándar de C tgmath.h sirve para utilizar funciones
matemáticas genéricas, principalmente de apoyo a math.h y complex.h, redefiniendo las funciones
para poder usar distintas definiciones en un mismo programa (sobrecarga).

Todos los componentes pertenecientes a math.h y complex.h se utilizan en tgmath.h.

Para cada función de math.h que existe en complex.h pero prefijada por c, el macro de tipo
genérico de tgmath.h conserva el nombre del de math.h.
Para las funciones que no tienen prefijo en math.h ni en complex.h, en tgmath.h se conserva el nombre
original.

atan2()
cbrt()
ceil()
copysign()
erf()
erfc()
exp2()
expm1()
fdim()
floor()
fma()
fmax()
fmin()
fmod()
frexp()
hypot()
ilogb()
ldexp()
lgamma()
llrint()
llround()
log10()
log1p()
log2()
logb()
lrint()
lround()
nearbyint()
nextafter()
nexttoward()
remainder()
remquo()
rint()
round()
scalbn()
scalbln()
tgamma()
trunc()

Para cada función de complex.h que tienen prefijo y no existen en math.h, la cabecera tgmath.h
conserva el nombre de complex.h.

carg()
cimag()
conj()
cproj()
creal()
La librería stdio.h
El archivo de cabecera de la biblioteca estándar de C stdio.h se utiliza para
utilizar las capacidades de entrada y salida más comunes en el lenguaje C como
scanf o printf.

Gracias a la librería stdio.h podemos utilizar los comandos estándar de entrada


y salida además de los comandos básicos de manipulación de ficheros.

La información proporcionada por Wikipedia es la siguiente:

Las funciones incluidas son:

Nombre Descripción

Funciones de manipulación de ficheros

fclose Cierra un fichero a través de su puntero.

fopen,freopen,fdopen Abre un fichero para lectura, para escritura/reescritura o para adición.

remove Elimina un fichero.

rename Cambia al fichero de nombre.

Coloca el indicador de posición de fichero para el stream apuntado por stream al comienzo
rewind
del fichero.

tmpfile Crea y abre un fichero temporal que es borrado cuando cerramos con la función fclose().

Funciones de manipulación de entradas y salidas.

Despeja los indicadores de final de fichero y de posición de fichero para el stream apuntado
clearerr
por stream al comienzo del fichero.

feof Comprueba el indicador de final de fichero.


ferror Comprueba el indicador de errores.

Si stream apunta a un stream de salida o de actualización cuya operación más reciente no


era de entrada, la función fflush envía cualquier dato aún sin escribir al entorno local o a ser
fflush escrito en el fichero; si no, entonces el comportamiento no está definido. Si stream es un
puntero nulo, la función fflush realiza el despeje para todos los streams cuyo
comportamiento está descrito anteriormente.

fgetpos Devuelve la posición actual del fichero.

fgetc Devuelve un carácter de un fichero.

fgets Consigue una cadena de caracteres de un fichero.

fputc Escribe un carácter en un fichero.

fputs Escribe una cadena de caracteres en un fichero.

ftell Devuelve la posición actual del fichero como número de bytes.

fseek Sitúa el puntero de un fichero en una posición aleatoria.

fsetpos Cambia la posición actual de un fichero.

fread lee diferentes tamaños de datos de un fichero.

Envía, desde el array apuntado por puntero, hasta nmemb de elementos cuyo tamaño es
especificado por tamaño. El indicador de posición de ficheros es avanzado por el número
fwrite
de caracteres escritos correctamente. Si existe un error, el valor resultante del indicador de
posición de ficheros es indeterminado.

getc Devuelve un carácter desde un fichero.

getchar Igual que getc.

Lee caracteres de entrada hasta que encuentra un salto de línea, y los almacena en un
gets
único argumento.

printf,fprintf,sprintf
Usados para imprimir salidas de datos.
snprintf

vprintf También utilizado para imprimir salidas.


perror Escribe un mensaje de error a stderr.

putc Devuelve un carácter de un fichero.

putchar,fputchar Igual que putc(stdout).

scanf,fscanf,sscanf Utilizado para introducir entradas.

vfscanf,vscanf,vsscanf También utilizado para introducir entradas.

Esta función es equivalente a la función setvbuf pasando los valores _IOFBF para modo y
setbuf BUFSIZ para tamaño, o (si acumulador es un puntero nulo), con el valor _IONBF para
modo.

Sólo puede ser usada después de que el stream apuntado por stream ha sido asociado con
un fichero abierto y antes de otra operación cualquiera es llevada acabo al stream. El
argumento modo determina cómo stream será almacenado según lo siguiente: _IOFBF
ocasiona la entrada/salida a ser completamente almacenado; _IOLBF ocasiona la
setvbuf
entrada/salida a almacenar por líneas; _IONBF ocasiona la entrada/salida a no ser
almacenado. Si acumulador no es un puntero nulo, el array al que es apuntado puede ser
usado en vez de la acumulación adjudicada por la función setvbuf. El argumento tamaño
especifica el tamaño del array.

Genera una cadena de caracteres que es un nombre válido para ficheros y que no es igual
al nombre de un fichero existente. La función tmpnam genera una cadena diferente cada
tmpnam vez que es llamada, hasta un máximo de TMP_MAX veces. Si la función es llamada más
veces que TMP_MAX, entonces el comportamiento de la función está definido según la
implementación del compilador.

ungetc

puts Imprime una de cadena de caracteres.

Las constantes miembro son:

Nombre Descripción

EOF Entero negativo (int) usado para indicar "fin de fichero".

BUFSIZ Entero que indica el tamaño del buffer utilizado por la función setbuf().

Tamaño máximo de la cadena de caracteres que contienen el nombre de un fichero para ser
FILENAME_MAX
abierto

FOPEN_MAX Número máximo de ficheros que pueden estar abiertos simultáneamente.


Abreviatura de input/output fully buffered (buffer entrada/salida totalmente lleno); es un entero que
_IOFBF se puede pasar como parámetro de la funciónsetvbuf() para requerir bloqueo del buffer en la
entrada y salida del stream abierto.

Abreviatura de input/output line buffered (...??); es un entero que se puede pasar como parametro
_IOLBF
a la función setvbuf() para requerir line buffered (??)en la entrada y salida del stream abierto.

Abreviatura de "input/output not buffered" (entrada/salida sin buffer); es un entero que se puede
_IONBF pasar como parametro a la función setvbuf() para requerir que la entrada salida del stream abierto
funcione sin buffer.

Tamaño de la cadena de caractres con la longitud suficiente para almacenar un nombre de fichero
L_tmpnam
temporal generado por la función tmpnam().

Macro que representa la constante puntero nulo; representa un valor de puntero que no apunta a
NULL
ninguna dirección válida de objeto alguno en memoria.

Entero que se puede pasar como parámetro a la función fseek() para indicar posicionamiento
SEEK_CUR
relativo a la posición actual del fichero.

Entero que se puede pasar como parámetro a la función fseek() para indicar posicionamiento
SEEK_END
relativo al final del fichero.

Entero que se puede pasar como parámetro a la función fseek() para indicar posicionamiento
SEEK_SET
relativo al inicio del fichero.

TMP_MAX El número máximo de nombres de ficheros únicos generables por la función tmpnam().

Las variables incluidas son:

Nombre Descripción

stdin Puntero a FILE que referencia la entrada estándar, normalmente el teclado.

stdout Puntero a FILE que referencia la salida estándar, normalmente el monitor.

stderr Puntero a FILE que referencia la salida de error estándar, normalmente el monitor.

Los tipos de datos son:

FILE – Contiene información sobre el fichero y el flujo de caracteres necesarios


para realizar operaciones de lectura/escritura sobre él.
fpos_t – Tipo que permite identificar la posición de cada byte en un fichero.
size_t – Tipo entero sin signo, resultante de utilizar el operador sizeof.
La librería stdint.h
El archivo de cabecera de la biblioteca estándar de C stdint.h se utiliza para definir los tamaños de tipos
enteros. Su implementación es igual que la de la librería inttypes.h.

Los tipos que trae son:

Con signo:

intN_t
int_leastN_t
int_fastN_t
intptr_t
intmax_t

Sin signo:

uintN_t
uint_leastN_t
uint_fastN_t
uintptr_t
uintmax_t

Donde N es el número de bits: 8,16,32,64.

Al igual que con la librería inttypes.h, su implementación es la siguiente:

Ejemplo de declaración:

int_fast32_t numero;

Para utilizar estos tipos junto con printf y scanf se hace la referencia a la variable de la siguiente forma:

Para scanf:

SCN + d(el número) + FAST o LEAST + N (bits)

Ejemplo:

scanf(“%d” SCNdFAST32 “\n”,&numero);

Para printf:

PRI + d(el número) + FAST o LEAST + N (bits)

Ejemplo:

printf(“El valor entero más largo es %d” PRIdFAST32 “\n”, numero);


La librería stddef.h
El archivo de cabecera de la biblioteca estándar de C stddef.h se utiliza para
definir macros como NULL y tipos de datos muy útiles como ptrdiff_t

Los macros son:

NULL – Un macro que incluye la constante de puntero a nulo.


Offsetof(tipo, miembro) – Una macro que se usa para determinar los bytes que
ocupa un campo en una estructura de un tipo.

Los tipos son:

size_t – Representa el tamaño de objetos en areas de memoria.


wchar_t – Especificación del tipo “wide character” de C++. Requiere de stddef.h o
wchar.h.
ptrdiff_t – Almacena el resultado de restar dos punteros.
La librería stdbool.h
El archivo de cabecera de la biblioteca estándar de C stdbool.h se utiliza para
poder utilizar en C las variables de tipo booleanas, es decir, poder usar true o false
en el código.

Con ésta librería lo que se consigue es la eliminación de la necesidad de 0 y


1 para poder controlar el código. Éste archivo de cabecera es muy simple y sólo
contiene la definición formal del tipo.

Macros:

bool – Definición del tipo.


true – Sustituye a 1.
false – Sustituye a 0.

Un ejemplo rápido sacado de Wikibooks:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void) {
bool keep_going = true; // Antes sería `bool keep_going = 1;`
while(keep_going) {
printf("Éste mensaje se mostrará mientras la variable sea True.\n");
keep_going = false; // Antes sería `keep_going = 0;`
}
printf("¡Para!\n");
return EXIT_SUCCESS;
}
La librería stdarg.h
El archivo de cabecera de la biblioteca estándar de C stdarg.h se utiliza para poder acceder a una
cantidad variable de argumentos pasados a una función.

Esto se utiliza mucho en programación con el concepto de “Variadic function”, es decir, una función que
acepta un número variable de argumentos.

Para utilizar este concepto miramos éste ejemplo de declaración y uso de una función:

long func(char, double, int, ...);

long func(char a, double b, int c, ...)


{
/* ... */
}

Hemos definido la función, que acepta un char, un double, un int y un número indeterminado de
parámetros de tipo entero. A la hora de usarlo, se puede ver igualmente como se declaran los parámetros
de la misma forma.
El tipo en stdarg.h es:

Name Description

va_list type for iterating arguments

Los macros son:

Name Description
va_start Comienza a recorrer la lista de argumentos.

va_arg Devuelve un argumento.

va_end Libera una lista de argumentos.

va_copy Copia elementos de una lista de argumentos a otra.

Un ejemplo de uso sacado de la Wikipedia:

#include <stdio.h>
#include <stdarg.h>

/* Muestra por pantalla todos los números positivos, se asume que son enteros */
void printargs(int arg1, ...)
{
va_list ap;
int i;

va_start(ap, arg1);
for (i = arg1; i >= 0; i = va_arg(ap, int))
printf("%d ", i);
va_end(ap);
putchar('\n');
}

int main(void)
{
printargs(5, 2, 14, 84, 97, 15, 24, 48, -1);
printargs(84, 51, -1);
printargs(-1);
printargs(1, -1);
return 0;
}
La librería signal.h

El archivo de cabecera de la biblioteca estándar de C signal.h se utiliza para especificar como un


programa puede manejar situaciones excepcionales mediante señales. Señales tales como la división entre
cero o un evento asíncrono indeseado fuera del programa.

Las funciones son:

int raise(int sig) - Envía una señal.


psignal(int sig, const char *s) - Devuelve a stderr una cadena que representa un número de señal.
void* signal(int sig, void (*func)(int)) - Establece las medidas adoptadas cuando el programa recibe la
señal.

Tipos:

typedef i-type sig_atomic_t

Macros:

SIG_DFL – Selecciona el manejo de la señal.


SIG_IGN – Ignora una señal.
SIG_ERR – Un número que se usa para errores.

Constantes:

Constante Significado Sistemas

SIGHUP Hangup POSIX


SIGINT Interrupt ANSI

SIGQUIT Quit POSIX

SIGILL Illegal instruction ANSI

SIGABRT Abort ANSI

SIGTRAP Trace trap POSIX

SIGIOT IOT trap 4.2 BSD

SIGEMT EMT trap 4.2 BSD

SIGINFO Information 4.2 BSD

SIGFPE Floating-point exception ANSI

SIGKILL Kill, unblock-able POSIX

SIGBUS Bus error 4.2 BSD

SIGSEGV Segmentation violation ANSI

SIGSYS Bad argument to system call 4.2 BSD

SIGPIPE Broken pipe POSIX

SIGALRM Alarm clock POSIX

SIGTERM Termination ANSI

SIGUSR1 User-defined signal 1 POSIX

SIGUSR2 User-defined signal 2 POSIX

SIGCHLD Child status has changed POSIX

SIGCLD Same as SIGCHLD System V

SIGPWR Power failure restart System V

SIGXCPU Exceeded CPU time POSIX


SIGSTOP Pause execution POSIX

SIGCONT Resume execution POSIX

La librería setjmp.h

El archivo de cabecera de la biblioteca estándar de C setjmp.h se utiliza para


proporcionar saltos en la ejecución del código y así modificar drásticamente el flujo
de ejecución del programa.

Se caracteriza por dos funciones:

int setjmp(jmp_buf env) - Para establecer el punto en que se debe saltar más tarde
desde longjump. El valor de setjmp es 0, y si se regresa a él desde un longjmp su
valor es distinto de cero.

void longjmp(jmp_buf env, int value) – se utiliza para volver al momento del
programa en que esté ubicado setjmp.

Como se puede ver, las dos funciones utilizar una variable de un tipo:

jmp_buf – Es un tipo de array, una estructura donde se guarda la posición que se


establece mediante setjmp.

La idea general sería como una bandera que colocamos en un punto concreto
del programa para volver a él más tarde automáticamente y así no tener que
programar rutinas o casos concretos.
La librería limits.h

El archivo de cabecera de la biblioteca estándar de C limits.h se utiliza para establecer mediante


constantes ciertas propiedades de las variables de tipo entero, propiedades como por ejemplo la definición de
su rango.

Su definición es muy parecida a la de la librería float.h, limita los valores de varios tipos de variables, las
constantes son las siguientes:

CHAR_BIT
SCHAR_MIN
SHRT_MIN
INT_MIN
LONG_MIN
LLONG_MIN
SCHAR_MAX
SHRT_MAX
INT_MAX
LONG_MAX
LLONG_MAX
UCHAR_MAX
USHRT_MAX
UINT_MAX
ULONG_MAX
ULLONG_MAX
CHAR_MIN
CHAR_MAX
MB_LEN_MAX

Un ejemplo sería el siguiente código extraído de éste enlace:

#include <stdio.h>
#include <limits.h>

int main()
{

printf("The number of bits in a byte %d\n", CHAR_BIT);

printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);


printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);

printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);


printf("The maximum value of SHORT INT = %d\n", SHRT_MAX);

printf("The minimum value of INT = %d\n", INT_MIN);


printf("The maximum value of INT = %d\n", INT_MAX);

printf("The minimum value of CHAR = %d\n", CHAR_MIN);


printf("The maximum value of CHAR = %d\n", CHAR_MAX);

printf("The minimum value of LONG = %ld\n", LONG_MIN);


printf("The maximum value of LONG = %ld\n", LONG_MAX);

return(0);
}
La librería iso646.h
El archivo de cabecera de la biblioteca estándar de C iso646.h se utiliza para poder utilizar los conjuntos
de caracteres ISO 646.

Los caracteres son los siguientes:

Macro Definición

and &&

and_eq &=

bitand &
bitor |

compl ~

not !

not_eq !=

or ||

or_eq |=

xor ^

xor_eq ^=

La librería inttypes.h
El archivo de cabecera de la biblioteca estándar de C inttypes.h se utiliza para operaciones de conversión
entre números entero de una forma más precisa, además de permitirnos definir con exactitud la longitud de un
entero.

Los tipos que trae son:

Con signo:

intN_t
int_leastN_t
int_fastN_t
intptr_t
intmax_t

Sin signo:

uintN_t
uint_leastN_t
uint_fastN_t
uintptr_t
uintmax_t
Donde N es el número de bits: 8,16,32,64.

Ejemplo de declaración:

int_fast32_t numero;

Para utilizar estos tipos junto con printf y scanf se hace la referencia a la variable de la siguiente forma:
Para scanf:
SCN + d(el número) + FAST o LEAST + N (bits)

Ejemplo:
scanf(“%d” SCNdFAST32 “\n”,&numero);
Para printf:
PRI + d(el número) + FAST o LEAST + N (bits)
Ejemplo:

printf(“El valor entero más largo es %d” PRIdFAST32 “\n”, numero);

La librería float.h

El archivo de cabecera de la biblioteca estándar de C float.h que contiene parámetros dependientes del
entorno e información sobre los rangos posibles y otras limitaciones para los números reales.

La especificación de las constantes es la siguiente:

DBL_DIG
DBL_EPSILON
DBL_MANT_DIG
DBL_MAX
DBL_MAX_10_EXP
DBL_MAX_EXP
DBL_MIN
DBL_MIN_10_EXP
DBL_MIN_EXP
FLT_DIG
FLT_EPSILON
FLT_MANT_DIG
FLT_MAX
FLT_MAX_10_EXP
FLT_MAX_EXP
FLT_MIN
FLT_MIN_10_EXP
FLT_MIN_EXP
FLT_RADIX
FLT_ROUNDS
LDBL_DIG
LDBL_EPSILON
LDBL_MANT_DIG
LDBL_MAX
LDBL_MAX_10_EXP
LDBL_MAX_EXP
LDBL_MIN
LDBL_MIN_10_EXP
LDBL_MIN_EXP

La librería fenv.h
El archivo de cabecera de la biblioteca estándar de C fenv.h permite controlar mediante macros entornos
en coma flotante.

Gracias a ésta librería podemos controlar y operar mucho mejor con números con coma flotante,
además podremos controlar mejor las operaciones de redondeo o controlar ajustes que afectan a los cálculos
generales con coma flotante.

La especificación de la librería es la siguiente:

Función Descripción

feclearexcept Limpia excepciones.

fegetenv Almacena el entorno de coma flotante actual.

fegetexceptflag Almacena el indicador de estado actual.


fegetround Recupera la dirección actual de redondeo.

feholdexcept Guarda el entorno de coma flotante actual y borra todas las excepciones.

feraiseexcept Lanza una excepción de coma flotante.

fesetenv Define el entorno de coma flotante actual.

fesetexceptflag Define el indicador de estado actual.

fesetround Establece la dirección actual de redondeo.

fetestexcept Comprueba si ciertas excepciones han sido lanzadas.

feupdateenv Restaura el entorno de coma flotante actual pero conserva todas las excepciones.

La librería errno.h
El archivo de cabecera de la biblioteca estándar de C errno.h, el cual mediante macros presenta un informe
de errores mediante la definición de códigos de error.

Los códigos de error vienen definidos como constantes y son dependientes del compilador que se use.
Según wikipedia en MinGW son los siguientes:

#define EPERM 1 /* Operation not permitted */


#define ENOFILE 2 /* No such file or directory */
#define ENOENT 2
#define ESRCH 3 /* No such proces*s */
#define EINTR* 4 /* Interrupted function call* */
#define EIO 5 /* Input/output error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Arg list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file descriptor */
#define ECHILD 10 /* No child processes */
#define EAGAIN 11 /* Resource temporarily unavailable */
#define ENOMEM 12 /* Not enough space */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
/* 15 - Unknown Error */
#define EBUSY 16 /* strerror reports "Resource device" */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Improper link (cross-device link?) */
#define ENODEV 19 /* No such device */
#define ENOTDIR 20 /* Not a directory */
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* Too many open files in system */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Inappropriate I/O control operation */

/* 26 - Unknown Error */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Invalid seek (seek on a pipe?) */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
#define EDOM 33 /* Domain error (math functions) */
#define ERANGE 34 /* Result too large (possibly too small) */
/* 35 - Unknown Error */
#define EDEADLOCK 36 /* Resource deadlock avoided (non-Cyg) */
#define EDEADLK 36
/* 37 - Unknown Error */
#define ENAMETOOLONG 38 /* Filename too long (91 in Cyg?) */
#define ENOLCK 39 /* No locks available (46 in Cyg?) */
#define ENOSYS 40 /* Function not implemented (88 in Cyg?) */
#define ENOTEMPTY 41 /* Directory not empty (90 in Cyg?) */
#define EILSEQ 42 /* Illegal byte sequence */

En Borland C++ las constantes serían los siguientes:

#define EZERO 0 /* Error 0 */


#define EINVFNC 1 /* Invalid function number */
#define ENOFILE 2 /* File not found */
#define ENOPATH 3 /* Path not found */
#define ECONTR 7 /* Memory blocks destroyed */
#define EINVMEM 9 /* Invalid memory block address */
#define EINVENV 10 /* Invalid environment */
#define EINVFMT 11 /* Invalid format */
#define EINVACC 12 /* Invalid access code */
#define EINVDAT 13 /* Invalid data */
#define EINVDRV 15 /* Invalid drive specified */
#define ECURDIR 16 /* Attempt to remove CurDir */
#define ENOTSAM 17 /* Not same device */
#define ENMFILE 18 /* No more files */

#define ENOENT 2 /* No such file or directory*/


#define EMFILE 4 /* Too many open files */
#define EACCES 5 /* Permission denied */
#define EBADF 6 /* Bad file number */
#define ENOMEM 8 /* Not enough core */
#define EFAULT 14 /* Unknown error */
#define ENODEV 15 /* No such device */
#define EINVAL 19 /* Invalid argument */
#define E2BIG 20 /* Arg list too long */
#define ENOEXEC 21 /* Exec format error */
#define EXDEV 22 /* Cross-device link */
#define ENFILE 23 /* Too many open files */
#define ECHILD 24 /* No child process */
#define ENOTTY 25 /* UNIX - not MSDOS */
#define ETXTBSY 26 /* UNIX - not MSDOS */
#define EFBIG 27 /* UNIX - not MSDOS */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Illegal seek */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* UNIX - not MSDOS */
#define EPIPE 32 /* Broken pipe */
#define EDOM 33 /* Math argument */
#define ERANGE 34 /* Result too large */
#define EEXIST 35 /* File already exists */
#define EDEADLOCK 36 /* Locking violation */
#define EPERM 37 /* Operation not permitted */
#define ESRCH 38 /* UNIX - not MSDOS */
#define EINTR 39 /* Interrupted function call */
#define EIO 40 /* Input/output error */
#define ENXIO 41 /* No such device or address */
#define EAGAIN 42 /* Resource temporarily unavailable */
#define ENOTBLK 43 /* UNIX - not MSDOS */
#define EBUSY 44 /* Resource busy */
#define ENOTDIR 45 /* UNIX - not MSDOS */
#define EISDIR 46 /* UNIX - not MSDOS */
#define EUCLEAN 47 /* UNIX - not MSDOS */
En Microsoft Windows los errores y su clasificación pueden encontrarse en su página de documentación
para desarrolladores.

En la web de The Single UNIX® Specification podemos ver la última actualización en la página de The Open
Group.

En la web barricane se hace una recopilación de los errores códigos de error en Linux/C desde los archivos
contenidos en /usr/include/asm-generic/errno-base.h y /usr/include/asm-generic/errno.h.

La librería assert.h
El archivo de cabecera de la biblioteca estándar de C assert.h contiene la macro de depuración assert, el
cual implementa una aserción para así comprobar comportamientos del programa.

La forma de definirlo sería así:

#define assert ( test )


Donde test es la aserción que se va a evaluar, mirando el ejemplo:

#include <stdio.h>
#include <assert.h>

int comprueba_assert ( int x )


{
assert( x <= 7 );
return x;
}

int main ( void )


{
int i;
for (i=0; i<=9; i++){
comprueba_assert ( i );
printf("i = %i\n", i);
}

return 0;
}

Vemos la definición de la cabecera, la función y la llamada a la misma, de tal forma que lo que el
programa va a hacer es comprobar la expresión x<=7, en caso de que la condición se evalúe como falsa
entonces la ejecución del programa terminará mediante la función abort ().

El archivo de cabecera assert.h será muy útil a la hora de depuración de programas y previsión de
comportamientos inesperados.

(Mientras terminan las votaciones y comenzamos con los nuevos temas, voy a ir completando diversos
apartados del blog, como por ejemplo la biblioteca estándar de C. Conforme vaya viendo lo que necesitemos
iré completando todo este tipo de apartados a la vez que continuamos con los temas, lo cual implicaría más
de un post al día, a ver que tal se da.)

La librería complex.h
Muchas veces es necesario manipular de una longitud más allá de los números enteros, existen momentos en
los que necesitemos realizar complejos cálculos matemáticos y para ello debemos ser capaces de manejar
números complejos. Para eso en C existe la librería complex.h.

Gracias a la librería complex.h podremos manejar cualquier tipo de dato y realizar operaciones logarítmicas,
raíces o trigonométricas. La especificación de la librería es la siguiente:

double cabs(double complex); Magnitud del número complejo

double complex cacos(double complex); Coseno complejo inverso

Coseno hiperbólico complejo


double complex cacosh(double complex);
inverso

double carg(double complex); Argumento


double complex casin(double complex); Seno complejo inverso

double complex casinh(double complex); Seno hiperbólico complejo inverso

double complex catan(double complex); Tagente compleja inversa

Tangente hiperbólica compleja


double complex catanh(double complex);
inversa

double complex ccos(double complex); Coseno complejo

double complex ccosh(double complex); Coseno hiperbólico complejo

double complex cexp(double complex); exponenecial compleja

double cimag(double complex); Parte Imaginaria

double complex clog(double complex); Logaritmo natural complejo

double complex conj(double complex); conjugado

double complex cpow(double complex, double complex); potencia

double complex cproj(double complex); Proyección complejan. 1

double creal(double complex); Parte Real

double complex csin(double complex); Seno complejo

double complex csinh(double complex); Seno hiperbólico complejo

double complex csqrt(double complex); Raíz cuadrada

double complex ctan(double complex); Tangente compleja

double complex ctanh(double complex); Tangente hiperbólica compleja


String.h
Es un archivo de la Biblioteca estándar del lenguaje de programación C que contiene la
definición de macros, constantes, funciones y tipos de utilidad para trabajar con cadenas de caracteres y
algunas operaciones de manipulación de memoria (el nombre string puede ser algo inapropiado).

Las funciones declaradas en string.h se han hecho muy populares, por lo que están garantizadas para
cualquier plataforma que soporte C. Sin embargo, existen algunos problemas de seguridad con estas
funciones, como el desbordamiento de buffer (buffer overflow), que hacen que algunos programadores
prefieran opciones más seguras frente a la portabilidad que estas funciones ofrecen. Además, las funciones
para cadenas de caracteres sólo trabajan con conjuntos de caracteres ASCII o extensiones ASCII
compatibles.

Anda mungkin juga menyukai