Sie sind auf Seite 1von 57

C (lenguaje de programacin)

(Redirigido desde Lenguaje de programacin C)

Para el libro, vase El lenguaje de programacin C. Para otros usos de este trmino, vase C (desambiguacin).

Desarrollador(es)

Dennis Ritchie y Bell Labs

Informacin general

Paradigma

Imperativo (Procedural),Estructurado

Apareci en

1972

Diseado por

Dennis M. Ritchie

ltima versin estable

C11 (diciembre de 2011)

Tipo de dato

Fuerte, Esttico

Implementaciones

Mltiples

Dialectos

Cyclone, Unified Parallel C, Split-C, Cilk, C*

Influido por

B (BCPL,CPL), ALGOL 68, Ensamblador, PL/I,Fortran


1

Ha influido a

Vala, C#, ObjectiveC,C++, AWK, bc, Java, php,NXC, D

Sistema operativo

Multiplataforma

C es un lenguaje de programacin creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Se trata de un lenguaje fuertemente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos. La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas.
ndice
[ocultar]

1 Filosofa 2 Caractersticas

o o

2.1 Propiedades 2.2 Carencias

3 Historia

o o o o o

3.1 Desarrollo inicial 3.2 El C de Kernighan y Ritchie 3.3 ANSI C e ISO C 3.4 C99 3.5 C11

4 Ventajas 5 Inconvenientes 6 Variantes 7 Proceso de compilacin

7.1 Ejemplo de cdigo

8 Herramientas de programacin 9 Aplicabilidad

9.1 Aplicaciones embebidas

10 Bibliotecas C 11 Vase tambin 12 Referencias 13 Enlaces externos

[editar]Filosofa
Uno de los objetivos de diseo del lenguaje C es que slo sean necesarias unas pocas instrucciones en lenguaje mquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecucin. Es muy posible escribir C a bajo nivel de abstraccin; de hecho, C se us como intermediario entre diferentes lenguajes. En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de caractersticas, se pueden desarrollar compiladores de C fcilmente. En consecuencia, el lenguaje C est disponible en un amplio abanico de plataformas (ms que cualquier otro lenguaje). Adems, a pesar de su naturaleza de bajo nivel, el lenguaje se desarroll para incentivar la programacin independiente de la mquina. Un programa escrito cumpliendo los estndares e intentando que sea porttil puede compilarse en muchos computadores. C se desarroll originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programacin de software de sistema, para la que se dise originalmente.

[editar]Caractersticas [editar]Propiedades
Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).

Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente.

Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por referencia se consigue pasando explcitamente a las funciones las direcciones de memoria de dichos parmetros.

Punteros a funciones y variables estticas, que permiten una forma rudimentaria de encapsulado y polimorfismo. Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una nica variable "empleado").

[editar]Carencias
Recoleccin de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.

Soporte para programacin orientada a objetos, aunque la implementacin original de C++ fue un preprocesador que traduca cdigo fuente de C++ a C.

Funciones anidadas, aunque GCC tiene esta caracterstica como extensin. Soporte nativo para programacin multihilo.

Aunque la lista de las caractersticas tiles de las que carece C es larga, este factor ha sido importante para su aceptacin, porque escribir rpidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solucin ms natural para cada plataforma. sta es la causa de que a menudo C sea ms eficiente que otros lenguajes. Tpicamente, slo la programacin cuidadosa en lenguaje ensamblador produce un cdigo ms rpido, pues da control total sobre la mquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia. En algunos casos, una caracterstica inexistente puede aproximarse. Por ejemplo, la implementacin original de C++ consista en un preprocesador que traduca cdigo fuente C++ a C. La mayora de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la funcin. Mediante el paso de este puntero como un argumento de funcin, esta funcionalidad puede desempearse en C. Por ejemplo, en C++ se puede escribir: stack.push(val); Mientras que en C se podra escribir: push(stack, val); Donde el argumento stack es un puntero a una struct equivalente al puntero this de C++, que es un puntero a un objeto.

[editar]Historia

[editar]Desarrollo

inicial

El desarrollo inicial de C se llev a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; segn Ritchie, el periodo ms creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus caractersticas fueron tomadas de un lenguaje anterior llamado "B". Hay muchas leyendas acerca del origen de C y el sistema operativo con el que est ntimamente relacionado, Unix. Algunas de ellas son:

El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Haban estado jugando en el mainframe de su compaa, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenan suficiente control sobre la nave para evitar colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero esa mquina no tena sistema operativo, as que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 que haba en su oficina, pero era muy costoso, pues todo el cdigo estaba escrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y porttil para que el sistema operativo se pudiera portar fcilmente de un ordenador a otro. Consideraron usar B, pero careca de las funcionalidades necesarias para aprovechar algunas caractersticas avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C.

La justificacin para obtener el ordenador original que se us para desarrollar Unix fue crear un sistema que automatizase el archivo de patentes. La versin original de Unix se desarroll en lenguaje ensamblador. Ms tarde, el lenguaje C se desarroll para poder reescribir el sistema operativo.

En 1973, el lenguaje C se haba vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. ste fue uno de los primeros ncleos de sistema operativo implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, yMaster Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).

[editar]El

C de Kernighan y Ritchie

En 1978, Ritchie y Brian Kernighan publicaron la primera edicin de El lenguaje de programacin C, tambin conocido como La biblia de C. Este libro fue durante aos laespecificacin informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (La segunda edicin del libro cubre el estndar ANSI C, descrito ms abajo). Kernighan y Ritchie introdujeron las siguientes caractersticas al lenguaje:

El tipo de datos struct. El tipo de datos long int.

El tipo de datos unsigned int. Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigedad sintctica de expresiones como i=-10, que se podra interpretar bien como i =- 10 o bien como i = -10.

El C de Kernighan y Ritchie es el subconjunto ms bsico del lenguaje que un compilador debe de soportar. Durante muchos aos, incluso tras la introduccin del ANSI C, fue considerado "el mnimo comn denominador" en el que los programadores deban programar cuando deseaban que sus programas fueran transportables, pues no todos los compiladores soportaban completamente ANSI, y el cdigo razonablemente bien escrito en K&R C es tambin cdigo ANSI C vlido. En las primeras versiones del lenguaje, la definicin de funciones se haca mediante un 'prototipo de funcin' (function prototype), el cual indicaba al compilador el tipo de retorno de la funcin. Aunque este mtodo tiene una gran desventaja respecto al nuevo, debido a que no comprueba el nmero ni el tipo en la lista de argumentos; en otras palabras, es mucho ms fcil cometer errores al hacer una llamada a una funcin con argumentos incorrectos. Ejemplo del "viejo estilo": int power(); /* Podria haberse omitido (*) */ power() int a, b; { int n; for (n = 1; b > 0; --b) n *= a; return n; } Ejemplo de la nueva definicin: int power(int a, int b) { int n; for (n = 1; b > 0; --b) n *= a; return n; } (*) Por defecto, el tipo de retorno en C es int, por lo que la declaracin entera int

power(); podra haberse omitido.


En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron al lenguaje muchas caractersticas no oficiales, que estaba soportadas por los compiladores de AT&T, entre otros. Algunas de estas caractersticas eran:

Funciones void y el tipo de datos void *. Funciones que retornaban tipos de datos struct o union (en lugar de punteros). Asignacin de tipos de datos struct. Calificador const, que hace que un objeto sea de slo lectura. Una biblioteca estndar, que incorporaba la mayora de las funcionalidades implementadas por varios desarrolladores de compiladores.

Enumeraciones.

[editar]ANSI

C e ISO C

Artculo principal: ANSI C.

A finales de la dcada de 1970, C empez a sustituir a BASIC como lenguaje de programacin de microcomputadores predominante. Durante la dcada de 1980 se empez a usar en los IBM PC, lo que increment su popularidad significativamente. Al mismo tiempo, Bjarne Stroustrup empez a trabajar con algunos compaeros de Bell Labs para aadir funcionalidades de programacin orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en da el lenguaje de programacin de aplicaciones ms comn en el sistema operativo Microsoft Windows; mientras que C sigue siendo ms popular en el entorno Unix. Otro lenguaje que se desarroll en esa poca, Objective C, tambin aadi caractersticas de programacin orientada a objetos a C. Aunque hoy en da no es tan popular como C++, se usa para desarrollar aplicaciones Cocoa para Mac OS X. En 1983, el Instituto Nacional Estadounidense de Estndares organiz un comit, X3j11, para establecer una especificacin estndar de C. Tras un proceso largo y arduo, se complet el estndar en 1989 y se ratific como el "Lenguaje de Programacin C" ANSI X3.159-1989. Esta versin del lenguaje se conoce a menudo como ANSI C, o a veces como C89 (para distinguirla de C99). En 1990, el estndar ANSI (con algunas modificaciones menores) fue adoptado por la Organizacin Internacional para la Estandarizacin (ISO) en el estndar ISO/IEC 9899:1990. Esta versin se conoce a veces como C90. No obstante, "C89" y "C90" se refieren en esencia al mismo lenguaje. Uno de los objetivos del proceso de estandarizacin del ANSI C fue producir una extensin al C de Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sin embargo, el comit de estandarizacin incluy tambin muchas funcionalidades nuevas, como prototipos de funcin, y un preprocesador mejorado. Tambin se cambi la sintaxis de la declaracin de parmetros para hacerla semejante a la empleada habitualmente en C++: main(argc, argv) int { ... } argc; char **argv;

pas a ser int main(int argc, char *argv[]) { ... } ANSI C est soportado hoy en da por casi la totalidad de los compiladores. La mayora del cdigo C que se escribe actualmente est basado en ANSI C. Cualquier programa escrito slo en C estndar sin cdigo que dependa de un hardware determinado funciona correctamente en cualquier plataforma que disponga de una implementacin de C compatible. Sin embargo, muchos programas han sido escritos de forma que slo pueden compilarse en una cierta plataforma, o con un compilador concreto, esto puede ser debido a diversos motivos:

La utilizacin de bibliotecas no estndar, como interfaces grficas de usuario. El uso de compiladores que no cumplen las especificaciones del estndar. El uso de tipos de datos suponiendo que tendrn el mismo tamao u orden de los bits en todas las plataformas.

La macro __STDC__ puede usarse para dividir el cdigo en secciones ANSI y K&R para el compilador. # if __STDC__ extern int getopt(int,char * const *,const char *); # else extern int getopt(); # endif Algunos programadores recomiendan usar "#if __STDC__", como en el ejemplo, en lugar de "#ifdef __STDC__" porque algunos compiladores le asignan el valor cero a __STDC__ para indicar que no son compatibles con ANSI.

[editar]C99
Tras el proceso de estandarizacin de ANSI, la especificacin del lenguaje C permaneci relativamente estable durante algn tiempo, mientras que C++ sigui evolucionando. Sin embargo, el estndar continu bajo revisin a finales de la dcada de 1990, lo que llev a la publicacin del estndar ISO 9899:1999 en 1999. Este estndar se denomina habitualmente "C99". Se adopt como estndar ANSI en marzo de 2000. Las nuevas caractersticas de C99 incluyen:

Funciones inline. Las variables pueden declararse en cualquier sitio (como en C++), en lugar de poder declararse slo tras otra declaracin o al comienzo de una declaracin compuesta.

Muchos tipos de datos, incluyendo long long int (para reducir el engorro de la transicin de 32 bits a 64 bits), un tipo de datos booleano, y un tipo complex que representa nmeros complejos.

Arrays de longitud variable. Soporte para comentarios de una lnea que empiecen con //, como en BCPL o en C++, caracterstica para la que muchos compiladores haban dado soporte por su cuenta.

muchas funciones nuevas, como snprintf() algunos headers nuevos, como stdint.h.

Una consideracin importante es que hasta la publicacin de este estndar, C haba sido mayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un programa de C hacia C++ y mantener ese cdigo compilable en ambos lenguajes. Sin embargo, el nuevo estndar agrega algunas caractersticas que C++ no admite, como por ejemplo los inicializadores estticos de estructuras. Tambin define al tipo "bool" de una manera que no es exactamente la del C++. El compilador GCC, entre muchos otros, soportan hoy en da la mayora de las nuevas caractersticas de C99. Sin embargo, este nuevo estndar ha tenido poca acogida entre algunos desarrolladores de compiladores, como Microsoft y Borland, que se han centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto:
"En general, hemos visto poca demanda de muchas caractersticas de C99. Algunas caractersticas tienen ms demanda que otras, y consideraremos incluirlas en versiones futuras siempre que sean compatibles con C++."
2

[editar]C11
C11 (antes conocido como C1X) es un nombre informal para ISO/IEC 9899:2011,3 el ltimo estndar publicado para C. El borrador final, N1570,4 fue publicado en abril de 2011. El nuevo estndar super su ltima revisin el 10 de octubre de 2011 y fue oficialmente ratificado por la ISO y publicado el 8 de diciembre de 2011.

[editar]Ventajas

Lenguaje muy eficiente puesto que es posible utilizar sus caractersticas de bajo nivel para realizar implementaciones ptimas.

A pesar de su bajo nivel es el lenguaje ms portado en existencia, habiendo compiladores para casi todos los sistemas conocidos.

Proporciona facilidades para realizar programas modulares y/o utilizar cdigo o bibliotecas existentes.

[editar]Inconvenientes
El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinmico es la gran diferencia en velocidad de desarrollo: es ms lento programar en C, sobre todo para el

principiante. La razn estriba en que el compilador de C se limita a traducir cdigo sin apenas aadir nada. La gestin de la memoria es un ejemplo clsico: en C el programador ha de reservar y liberar la memoria explcitamente. En otros lenguajes (como BASIC, Matlab o C#) la memoria es gestionada de forma transparente para el programador. Esto alivia la carga de trabajo humano y en muchas ocasiones previene errores, aunque tambin supone mayor carga de trabajo para el procesador. El mantenimiento en algunos casos puede ser ms difcil y costoso que con ciertos lenguajes de ms alto nivel. El cdigo en C se presta a sentencias cortas y enrevesadas de difcil interpretacin. Aunque el lenguaje admite cdigo escrito de forma fcilmente legible, si no se siguen normas en el equipo de programacin algunos programadores pueden acabar escribiendo cdigo difcil de leer. Esto complica la revisin y el mantenimiento. Aunque en realidad esto est ms relacionado con el equipo de desarrollo que con el lenguaje en s. Cabe destacar el contexto y poca en la que fue desarrollado C. En aquellos tiempos existan muy pocos programadores, los cuales, a su vez, eran prcticamente todos expertos en el rea. De esta manera, se asuma que los programadores eran conscientes de sus trabajos y capaces de manejar perfectamente el lenguaje. Por esta razn es muy importante que los recin iniciados adopten buenas prcticas a la hora de escribir en C y manejar la memoria, como por ejemplo un uso intensivo de indentacin y conocer a fondo todo lo que implica el manejo de punteros y direcciones de memoria.

[editar]Variantes
Desde el inicio del lenguaje han surgido varias ramas de evolucin que han generado varios lenguajes:

Objective-C es un primer intento de proporcionar soporte para la programacin orientada a objetos en C, de escasa difusin, pero actualmente usado en Mac OS X , iOS yGNUstep.

C++ (pronunciado C Plus Plus) diseado por Bjarne Stroustrup fue el segundo intento de proporcionar orientacin a objetos a C y es la variante ms difundida y aceptada. Esta versin combina la flexibilidad y el acceso de bajo nivel de C con las caractersticas de la programacin orientada a objetos como abstraccin, encapsulacin y ocultacin.

Tambin se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con l:

Java, que une una sintaxis inspirada en la del C++ con una orientacin a objetos ms similar a la de Smalltalk y Objective C.

JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseado para dar a las pginas web mayor interactividad. A la versin estandarizada se la conoce como ECMAScript.

C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java.

[editar]Proceso

de compilacin

La compilacin de un programa C se realiza en varias fases que normalmente son automatizadas y ocultadas por los entornos de desarrollo: 1. Preprocesado consistente en modificar el cdigo fuente en C segn una serie de instrucciones (denominadas directivas de preprocesado) simplificando de esta forma el trabajo del compilador. Por ejemplo, una de las acciones ms importantes es la modificacin de las inclusiones (#include) por las declaraciones reales existentes en el archivo indicado. 2. Compilacin que genera el cdigo objeto a partir del cdigo ya preprocesado. 3. Enlazado que une los cdigos objeto de los distintos mdulos y bibliotecas externas (como las bibliotecas del sistema) para generar el programa ejecutable final.

[editar]Ejemplo

de cdigo

El siguiente programa imprime en pantalla la frase "Hola Mundo" (C99). // necesario para utilizar printf() # include <stdio.h> int main(void) { printf("Hola Mundo\n"); return 0; } El siguiente escribe "Hola Mundo" en C89 /* comentarios con '//' no permitidos en C89, s en C99 */ # include <stdio.h> /* necesario para utilizar printf */

main() /* tipo 'int' de retorno implcito */ { printf ("Hola Mundo\n") ; return 0; } Estructura de control "else if" if (condicion 1) { sentencia 1 } else if (condicion 2){ sentencia 2

} else if (condicion n){ sentencia n } else { sentencias por defecto }

[editar]Herramientas

de programacin

Al programar en C, es habitual usar algunas herramientas de programacin de uso muy extendido, sobre todo en entorno de tipo unix:

make: Herramienta para automatizar el proceso de compilacin, enlazado, etc. lint: Herramienta utilizada para detectar cdigo sospechoso, confuso o incompatible entre distintas arquitecturas

valgrind: Herramienta utilizada para detectar posibles fugas de memoria. gdb : Debugger de GNU utilizado para seguir la ejecucin del programa. dbx : Debugger que suele venir instalado con todos los UNIX. ddd : Interfaz grfico para el depurador gdb o dbx.

[editar]Aplicabilidad
Hecho principalmente para la fluidez de programacin en sistemas UNIX. Se usa tambin para el desarrollo de otros sistemas operativos como Windows o GNU/Linux. Igualmente para aplicaciones de escritorio como GIMP, cuyo principal lenguaje de programacin es C. De la misma forma, es muy usado en aplicaciones cientficas (para experimentos informticos, fsicos, qumicos, matemticos, entre otros, parte de ellos conocidos comomodelos y simuladores), industriales (industria robtica, ciberntica, sistemas de informacin y base de datos para la industria petrolera y petroqumica. Predominan tambin todo lo que se refiere a simulacin de mquinas de manufactura), simulaciones de vuelo (es la ms delicada, ya que se tienen que usar demasiados recursos tanto de hardware como de software para desarrollar aplicaciones que permitan simular el vuelo real de una aeronave. Se aplica por tanto, en diversas reas desconocidas por gran parte de los usuariosnoveles. Los ordenadores de finales de los 90 son varios rdenes de magnitud ms potentes que las mquinas en que C se desarroll originalmente. Programas escritos en lenguajes de tipo dinmico y fcil codificacin (Ruby, Python, Perl...) que antao hubieran resultado demasiado lentos, son lo bastante rpidos como para desplazar en uso a C. Aun as, se puede seguir encontrando cdigo C en grandes desarrollos de animaciones, modelados y escenas en 3D en pelculas y otras aplicaciones multimedia.

Actualmente, los grandes proyectos de software se dividen en partes, dentro de un equipo de desarrollo. Aquellas partes que son ms "burocrticas" o "de gestin" con los recursos del sistema, se suelen realizar en lenguajes de tipo dinmico o de guion (script), mientras que aquellas partes "crticas", por su necesidad de rapidez de ejecucin, se realizan en un lenguaje de tipo compilado, como C o C++. Si, despus de hacer la divisin, las partes crticas no superan un cierto porcentaje del total (aproximadamente el 10%) entonces todo el desarrollo se realiza con lenguajes dinmicos. Si la parte crtica no llega a cumplir las expectativas del proyecto, se comparan las alternativas de una inversin en nuevo hardware frente a invertir en el coste de un programador para que reescriba dicha parte crtica.

[editar]Aplicaciones

embebidas

C es el lenguaje comn para programar sistemas embebidos.[cita requerida] El cdigo ligero que un compilador C genera, combinado con la capacidad de acceso a capas del software cercanas al hardware son la causa de su popularidad en estas aplicaciones. Una caracterstica donde C demuestra comodidad de uso particularmente valiosa en sistemas embebidos es la manipulacin de bits. Los sistemas contienen registros mapeados en memoria (en ingls, MMR) a travs de los cuales los perifricos se configuran. Estos registros mezclan varias configuraciones en la misma direccin de memoria, aunque en bits distintos. Con C es posible modificar fcilmente uno de estos bits sin alterar el resto. Por ejemplo: int *mmr; /* puntero al registro que queremos modificar */ mmr = 0x40008ABC; /* direccin de memoria del registro */ * mmr |= 1<<7; /* pone a 1 el bit 8 sin modificar los dems */ * mmr &= ~(1<<12) /* pone a 0 el bit 13 sin modificar los dems */ Este tipo de manipulacin es muy tediosa o sencillamente imposible en otros lenguajes de alto nivel, dado que se utilizan operaciones comunes del lenguaje ensamblador como las operaciones a nivel bit OR, AND, SHL y CPL pero que estn disponibles en el lenguaje C. Otras caractersticas de C consideradas desventajas en la programacin para PC -como la ausencia de control de memoria automtico- se convierten en ventajas cuando los sistemas embebidos necesitan cdigo pequeo y optimizado. Ese es el caso de los sistemas basados en microcontroladores de poca potencia como el intel 8051 o muchos sistemas ARM.

[editar]Bibliotecas

Una biblioteca de C es una coleccin de funciones utilizadas en el lenguaje de programacin C. Las bibliotecas ms comunes son la biblioteca estndar de C y la biblioteca delestndar ANSI C, la cual provee las especificaciones de los estndares que son ampliamente compartidas entre bibliotecas. La biblioteca ANSI C estndar, incluye funciones para la entrada y salida de archivos, alojamiento de memoria y operaciones con datos comunes: funciones matemticas, funciones de manejo de cadenas de texto y funciones de hora y fecha.

Otras bibliotecas C son aquellas utilizadas para desarrollar sistemas Unix, las cuales proveen interfaces hacia el ncleo. Estas funciones son detalladas en varios estndares tales como POSIX y el Single UNIX Specification. Ya que muchos programas han sido escritos en el lenguaje C existe una gran variedad de bibliotecas disponibles. Muchas bibliotecas son escritas en C debido a que C generacdigo objeto rpido; los programadores luego generan interfaces a la biblioteca para que las rutinas puedan ser utilizadas desde lenguajes de mayor nivel, tales como Java, Perl yPython.

[editar]Vase

tambin

Biblioteca estndar de C Operadores de C y C++ Compilador Preprocesador Enlazador GCC C++

[editar]Referencias

Biblioteca estndar de C
La biblioteca estndar de C (tambin conocida como libc) es una recopilacin de ficheros cabecera y bibliotecas con rutinas, estandarizadas por un comit de la Organizacin Internacional para la Estandarizacin (ISO), que implementan operaciones comunes, tales como las de entrada y salida o el manejo de cadenas. A diferencia de otros lenguajes como COBOL, Fortran, o PL/1, C no incluye palabras clave para estas tareas, por lo que prcticamente todo programa implementado en C se basa en la biblioteca estndar para funcionar.
ndice
[ocultar]

1 Diseo

1.1 Calidad del diseo

2 Historia 3 El estndar ANSI

3.1 Archivos de cabeceras de la biblioteca ANSI C

4 La biblioteca estndar de C en C++ 5 Bibliotecas de apoyo comunes 6 Funciones incorporadas del compilador 7 Biblioteca estndar de POSIX 8 Vase tambin 9 Referencias 10 Enlaces externos

[editar]Diseo
El nombre y las caractersticas de cada funcin, el prototipo, as como la definicin de algunos tipos de datos y macros, se encuentran en un fichero denominado archivo de cabecera (con extensin ".h"), pero la implementacin real de las funciones estn separadas en un archivo de la biblioteca. La denominacin y el mbito de las cabeceras se han convertido en comunes, pero la organizacin de las bibliotecas sigue siendo diversa, ya que stas suelen distribuirse con cada compilador. Dado que los compiladores de C, a menudo, ofrecen funcionalidades adicionales que no estn especificados en el ANSI C, la biblioteca de un compilador no siempre es compatible con el estndar ni con las bibliotecas de otros compiladores.

[editar]Calidad

del diseo

Est demostrado que la mayor parte de la biblioteca estndar de C ha sido bien diseada, aunque, se ha comprobado que algunas partes tambin son fuente de errores; funciones para entrada de cadenas como gets() o scanf(), producen desbordamientos de buffer, y muchas guas de

programacin recomiendan evitar su uso. La funcin strtok()presenta otra singularidad, est diseada para ser utilizada como un analizador lxico rudimentario, pero resulta difcil de utilizar adems de ser muy frgil.

[editar]Historia
El lenguaje de programacin C, antes de normalizarse, no dispona de funcionalidades tales como operaciones de entrada/salida (a diferencia de lenguajes tradicionales como COBOL y FORTRAN). Con el tiempo, las comunidades de usuarios de C fueron compartiendo ideas, as como las implementaciones de lo que ahora se denomina las bibliotecas estndar de C para proporcionar esas funcionalidades. Muchas de estas ideas se incorporaron finalmente en la definicin estandarizada del lenguaje. Tanto Unix como C fueron creados en los Laboratorios Bell de AT&T a finales de la dcada de los 60 y principios de los 70. Fue en los 70 cuando el lenguaje de programacin C acrecent su popularidad. Muchas organizaciones y universidades crearon sus propias versiones del lenguaje para sus propios proyectos. A comienzos de los 80 se evidenciaron los problemas de compatibilidad derivados de la existencia de las mltiples implementaciones del lenguaje. en 1983 el Instituto Nacional Estadounidense de Estndares (ANSI, de las siglas en ingls de American National Standards Institute) creo un comit para establecer una especificacin estndar del lenguaje conocida como ANSI C. Este trabajo culmin con la creacin del llamado estndar C89 en 1989. Una parte del estndar resultante fue un conjunto de bibliotecas de software denominado 'bibliotecas estndar de ANSI C. Posteriores versiones del estndar C han aadido algunos nuevos ficheros cabecera a la biblioteca:

Las cabeceras <iso646.h>, <wchar.h> y <wctype.h> fueron aadidas con Normativa Addendum 1 (abreviado NA1), y fueron ratificadas por el estndar en 1995.

Las cabeceras <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> y <t

gmath.h>. fueron aadidas en 1999 con la revisin C99 del estndar.


El soporte de estas nuevas extensiones vara segn implementaciones.

[editar]El

estndar ANSI

La biblioteca estndar de ANSI C consta de 24 ficheros cabecera que pueden ser incluidos en un proyecto de programacin con una simple directiva. Cada cabecera contiene la declaracin de una o ms funciones, tipos de datos y macros. En comparacin con otros lenguajes de programacin (como por ejemplo Java) la biblioteca estndar es muy pequea, est proporciona un conjunto bsico de funciones matemticas, de tratamiento de cadenas, conversiones de tipo y entrada/salida por consola o por ficheros. No se incluyen, ni un conjunto de tipos de datos contenedores bsicos (listas, pilas, colas, ...), ni

herramientas para crear una interfaz grfica de usuario (GUI), ni operaciones para trabajar en red, ni otras funcionalidades que lenguajes como C++ o Java incorporan de manera estndar. La principal ventaja del reducido tamao de la biblioteca estndar de C es que construir un entorno de trabajo en ANSI C es muy fcil y, en consecuencia, portar un programa en ANSI C de una plataforma a otra es relativamente sencillo. Se han desarrollado muchas otras bibliotecas para proporcionar una funcionalidad equivalente a la de otros lenguajes de programacin. Por ejemplo, el proyecto de desarrollo delentorno de escritorio de GNOME cre las bibliotecas GTK+ y GLib con funcionalidades para desarrollar y trabajar con interfaces grficas de usuario. La variedad de bibliotecas disponibles ha hecho que, a lo largo de la historia, haya quedado demostrada la superioridad de algunas de estas herramientas. El gran inconveniente es que a menudo no funcionan especialmente bien en conjunto, normalmente son los propios programadores familiarizados con las diferentes bibliotecas quienes consiguen sacarles el mximo partido, aunque diferentes partes de ellas puedan estar disponibles en cualquier plataforma.

[editar]Archivos

de cabeceras de la biblioteca ANSI C

<assert.h>

Contiene la macro assert (asercin), utilizada para detectar errores lgicos y otros tipos de fallos en la depuracin de un programa.

<complex.h> Conjunto de funciones para manipular nmeros complejos (nuevo en C99).

<cstring>

Contiene las funciones strlen, strstr, strchr, strcat.

<ctype.h>

Contiene funciones para clasificar caracteres segn sus tipos o para convertir entre maysculas y minsculas independientemente del conjunto de caracteres(tpicamente ASCII o alguna de sus extensiones).

<errno.h>

Para analizar los cdigos de error devueltos por las funciones de biblioteca.

<fenv.h>

Para controlar entornos en coma flotante (nuevo en C99).

<float.h>

Contiene la definicin de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mnima entre dos nmeros en coma flotante (_EPSOLON), el nmero mximo de dgitos de precisin (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).

<inttypes.h> Para operaciones de conversin con precisin entre tipos enteros (nuevo en C99).

<iso646.h>

Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).

<limits.h>

Contiene la definicin de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX).

<locale.h>

Para la funcin setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuracin regional).

<math.h>

Contiene las funciones matemticas comunes.

<setjmp.h>

Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales.

<signal.h>

Para controlar algunas situaciones excepcionales como la divisin por cero.

<stdarg.h>

posibilita el acceso a una cantidad variable de argumentos pasados a una funcin.

<stdbool.h> Para el tipo booleano (nuevo en C99).

<stdint.h>

Para definir varios tipos enteros (nuevo en C99).

<stddef.h>

Para definir varios tipos de macros de utilidad.

<stdio.h>

Proporciona el ncleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable funcin printf).

<stdlib.h>

Para realizar ciertas operaciones como conversin de tipos, generacin de nmeros pseudo-aleatorios, gestin de memoria dinmica, control de procesos, funciones de entorno, de sealizacin (??), de ordenacin y bsqueda.

<string.h>

Para manipulacin de cadenas de caracteres.

<tgmath.h> Contiene funcionalidades matemticas de tipo genrico (type-generic) (nuevo en C99).

<time.h>

Para tratamiento y conversin entre formatos de fecha y hora.

<wchar.h>

Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o ms bytes por carcter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).

<wctype.h> Para clasificar caracteres anchos (nuevo en NA1). [editar]La

biblioteca estndar de C en C++

El lenguaje de programacin C++ incluye la funcionalidad de la biblioteca estndar ANSI C, pero hace algunas modificaciones como cambiar los nombres de los ficheros de cabecera, de <xxx.h> a <cxxx> (aunque los nombres en estilo C, aun siendo obsoletos, siguen estando disponibles), y ubican todos los identificadores dentro del namespacestd.

[editar]Bibliotecas

de apoyo comunes

Aunque no est estandarizado, los programas en C pueden depender de una biblioteca de rutinas en tiempo de ejecucin que contengan cdigo que el compilador utiliza en tiempo de ejecucin. El cdigo que inicializa un proceso por el sistema operativo (por ejemplo, antes de llamar a main()) est implementado en la biblioteca Run-Time (tiempo de ejecucin) de C proporcionada por el distribuidor del compilador. El cdigo de la biblioteca Run-Time podra ayudar con otras caractersticas de la implementacin, como la manipulacin de excepciones no capturadas o implementando cdigo para operaciones en coma flotante. La biblioteca estndar de C slo documenta que las rutinas mencionadas en el presente artculo estn disponibles, as como su comportamiento. Ya que la implementacin del compilador podra depender de la implementacin de estas funciones para estar disponible, es probable que la especificacin de las rutinas proporcionada por el fabricante est empaquetada con la biblioteca estndar de C en el mismo mdulo, ya que probablemente, ambas sern necesarias para cualquier programa construido con este compilador. Aunque a menudo se confunda con la biblioteca estndar de C, debido a este empaquetamiento, la biblioteca Run-Time de C no es una parte normalizada del lenguaje, sino que es una especificacin

[editar]Funciones

incorporadas del compilador

Algunos compiladores (por ejemplo GCC1 ) proporcionan versiones incorporadas de muchas de las funciones de la biblioteca estndar de C; es decir, la implementacin de las funciones est escrita

dentro del fichero objeto compilado, y el programa llama a la versin incorporada en vez de, a la funcin del fichero objeto compartido en la biblioteca de C. Esto reduce el sobrecoste de una llamada a funcin, especialmente si las llamadas a funcin son remplazadas con variantes inline, y permiten otras formas de optimizacin(como cuando el compilados sabe las caractersticas de control de flujo de las variantes incorporadas), pero puede causar confusin al depurar (por ejemplo, las versiones incorporadas no pueden ser remplazadas por las variantes instrumentadas).

[editar]Biblioteca

estndar de POSIX

Artculos principales: :en:C POSIX library y C POSIX library (en ingls).

POSIX (y SUS) especifica una serie de rutinas que deben estar disponibles ms all de la propia biblioteca estndar de C. A menudo stas se implementan conjuntamente con la biblioteca de C estndar, con distintos niveles de proximidad. Por ejemplo, glibc implementa funciones como fork() dentro de libc.so, pero antes NPTL se fusion con glibcconstituyendo una biblioteca con su propia marca de linkado. A menudo, esta funcionalidad de POSIX se considera una parte de la biblioteca; la propia biblioteca de C puede ser identificada como la biblioteca ANSI C o ISO C.

[editar]Vase

tambin

Lista de funciones en C Biblioteca de C GNU dietlibc, alternativa reducida a la biblioteca estndar de C uClibc, una biblioteca estndar de C para sistemas Linux empotrados (sin MMU) newlib, una biblioteca estndar de C para sistemas empotrados (requiere MMU) klibc, principalmente para arrancar sistemas Linux EGLIBC, variante de glibc para sistemas embebidos Biblioteca estndar de C++

Biblioteca estndar de C++


En C++, la biblioteca estndar es una coleccin de Clases y funciones, escritas en el ncleo del lenguaje. La biblioteca estndar proporciona varios contenedores genricos, funciones para utilizar y manipular esos contenedores, funciones objeto, cadenas y flujos genricos (incluyendo E/S interactiva y de archivos) y soporte para la mayora de las caractersticas del lenguaje. La biblioteca estndar de C++ tambin incorpora la ISO C90 biblioteca estndar de C. Las caractersticas de la biblioteca estndar estn declaradas en el espacio de nombres (namespace) std. La Standard Template Library es un subconjunto de la biblioteca estndar de C++ que contiene los contenedores, algoritmos, iteradores, funciones objeto, etc; aunque algunas personas utilizan el trmino STL indistintamente con la biblioteca estndar de C++. Los archivos de Cabecera de la biblioteca estndar de C++ no terminan en ".h".
ndice
[ocultar]

1 Cabeceras Estndar

o o o o o o o

1.1 Contenedores 1.2 General 1.3 Strings 1.4 Flujos y Entrada/Salida 1.5 Numricas 1.6 Soporte del Lenguaje 1.7 Biblioteca estndar de C

2 Enlaces externos 3 Referencias

[editar]Cabeceras

Estndar

Los siguientes archivos contienen las declaraciones de la biblioteca estndar.

[editar]Contenedores
<bitset> Provee la clase contenedora especializada std::bitset, un arreglo de bits. <deque> Provee la plantilla clase contenedora std::deque, una cola doblemente enlazada. <list> Provee la plantilla clase contenedora std::list, una lista doblemente enlazada. <map>

Provee las plantillas clases contenedoras std::map y std::multimap, un arreglo asociativo y un arreglo asociativo mltiple respectivamente. <queue> Provee la clase adaptadora contenedora std::queue, una cola de datos. <set> Provee las plantillas clases contenedoras std::set y std::multiset, contenedores asociativos ordenados. <stack> Provee la clase adaptadora contenedora std::stack, una pila de datos. <vector> Provee la plantilla clase contenedora std::vector, un arreglo dinmico.

[editar]General
<algorithm> Provee la definicin de muchos algoritmos. <functional> Provee varios objetos funcionales, diseados para ser utilizados por los algoritmos estndares. <iterator> Provee clases y plantillas para trabajar con iteradores. <locale> Provee las clases y plantillas para trabajar con locales. <memory> Provee facilidades para el manejo de memoria en C++, incluyendo la clase plantilla std::auto_ptr. <stdexcept> Contiene las clases estndares de excepcin as como std::logic_error y std::runtime_error, ambas derivadas de std::exception. <utility> Provee la clase plantilla std::pair, para trabajar con pares (tuplas de dos miembros) de objetos.

[editar]Strings
<string> Provee las clases y plantillas estndares de C++ para trabajar con cadena de caracteres.

[editar]Flujos

y Entrada/Salida
<fstream> Provee facilidades para la entrada y salida basada en archivos. <ios> Provee varios tipos y funciones bsicas para la operacin de flujos de entrada y salida. <iostream> Provee los elementos fundamentales para la entrada y salida en C++. <iosfwd> Provee las declaraciones hacia adelante de varias clases plantillas de E/S. <iomani p> Provee facilidades para manipular el formateo de salida, as como la base utilizada cuando se formatean enteros y los valores precisin o punto flotante. <istr eam > Provee la clase plantilla std::istream y otras clases para la entrada de datos. < o s t r e a m > Provee la clase plantilla std::ostream y otras clases para la salida de datos. < s s t r e a m >

Provee la clase plantilla std::sstream y otras clases para la manipulacin de cadena de caracteres. < s t r e a m b u f >

[ e d i t a r ]

N u m r i c a s
< c o m p l e

x > Provee la clase plantilla std::complex y funciones asociadas al trabajo con nmeros complejos. < n u m e r i c > Provee algoritmos para el procesamiento numrico. < v a l a r r a y > Provee la clase plantilla std::valarray, una clase arreglo optimizada para el procesamiento numrico.

Provee varios tipos y funciones relacionadas al manejo de excepciones, incluyendo std::exception, la clase base para todas las excepciones arrojadas por la biblioteca estndar.

Provee la clase plantilla std::numeric_limits, utilizada para describir las propiedades de los tipos numricos fundamentales.

Provee los operadores new y delete y otras funciones y tipos que componen los elementos fundamentales para el manejo de memoria en C++.

Provee las facilidades para trabajar con informacin de tipo en tiempo de ejecucin en C++.

Iostream
iostream es un componente de la biblioteca estndar (STL) del lenguaje de programacin C++ que es utilizado para operaciones de entrada/salida. Su nombre es un acrnimo deInput/Output Stream. El flujo de entrada y salida de datos en C++ (y su predecesor C) no se encuentra definida dentro de la sintaxis bsica y se provee por medio de librerias de funciones especializadas como iostream. iostream define los siguientes objetos:

cin : Flujo de entrada cout : Flujo de salida cerr : Flujo de error no almacenado. clog : Flujo de error almacenado.

Todos los objetos derivados de iostream hacen parte del espacio de nombres std.

[editar]Uso
El clsico programa Hola Mundo puede ser expresado en C++ utilizando iostream: #include <iostream> #include <conio.h> using namespace std; int main() { cout << "Hello, world!" << endl; return 0; system("pause"); }

stdio.h
stdio.h, que significa "standard input-output header" (cabecera estandar E/S), es la biblioteca estndar del lenguaje de programacin C, el archivo de cabecera que contiene las definiciones de macros, las constantes, las declaraciones de funciones y la definicin de tipos usados por varias operaciones estndar de entrada y salida. Por motivos de compatibilidad, el lenguaje de programacin C++ (derivado de C) tambin tiene su propia implementacin de estas funciones, que son declaradas con el archivo de cabeceracstdio. Las funciones declaradas en stdio.h son sumamente populares.
ndice
[ocultar]

1 Ejemplo de uso 2 Funciones miembro 3 Constantes miembro 4 Variables miembro 5 Tipos miembro 6 Vase tambin

[editar]Ejemplo

de uso

En C y sus derivados, todas las funciones son declaradas en archivos de cabecera. As, los programadores tienen que incluir el archivo de cabecera stdio.h dentro del cdigo fuente para poder utilizar las funciones que estn declaradas. Nota: el compilador diferencia las mayusculas entre las minusculas. #include <stdio.h> int main(void) { int ch; while ((ch = getchar()) != EOF) putchar(ch); putchar('\n'); return 0; } El programa lee todas las entradas desde la entrada estndar y las muestra en la salida estndar, lnea a lnea.

[editar]Funciones

miembro

Las funciones declaradas en stdio.h pueden clasificarse en dos categoras: funciones de manipulacin de ficheros y funciones de manipulacin de entradas y salidas.

Nombre

Descripcin

Funciones de manipulacin de ficheros

fclose

Cierra un fichero a travs de su puntero.

fopen,freopen,fdopen

Abre un fichero para lectura, para escritura/reescritura o para adicin.

remove

Elimina un fichero.

rename

Cambia al fichero de nombre.

rewind

Coloca el indicador de posicin de fichero para el stream apuntado por stream al comienzo del fichero.

tmpfile

Crea y abre un fichero temporal que es borrado cuando cerramos con la funcin fclose().

Funciones de manipulacin de entradas y salidas.

clearerr

Despeja los indicadores de final de fichero y de posicin de fichero para el stream apuntado por stream al comienzo del fichero.

feof

Comprueba el indicador de final de fichero.

ferror

Comprueba el indicador de errores.

fflush

Si stream apunta a un stream de salida o de actualizacin cuya operacin ms reciente no era de entrada, la funcin fflush enva cualquier dato an sin escribir al entorno local o a ser escrito en el fichero; si no, entonces el comportamiento no est definido. Si stream es un puntero nulo, la funcin fflush realiza el despeje para todos los streams cuyo comportamiento est descrito anteriormente.

fgetpos

Devuelve la posicin actual del fichero.

fgetc

Devuelve un carcter de un fichero.

fgets

Consigue una cadena de caracteres de un fichero.

fputc

Escribe un carcter en un fichero.

fputs

Escribe una cadena de caracteres en un fichero.

ftell

Devuelve la posicin actual del fichero como nmero de bytes.

fseek

Sita el puntero de un fichero en una posicin aleatoria.

fsetpos

Cambia la posicin actual de un fichero.

fread

lee diferentes tamaos de datos de un fichero.

fwrite

Enva, desde el array apuntado por puntero, hasta nmemb de elementos cuyo tamao es especificado por tamao. El indicador de posicin de ficheros es avanzado por el nmero de caracteres escritos correctamente. Si existe un error, el valor resultante del indicador de posicin de ficheros es indeterminado.

getc

Devuelve un carcter desde un fichero.

getchar

Igual que getc.

gets

Lee caracteres de entrada hasta que encuentra un salto de lnea, y los almacena en un nico argumento.

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

vprintf

Tambin utilizado para imprimir salidas.

perror

Escribe un mensaje de error a stderr.

putc

Devuelve un carcter de un fichero.

putchar,fputchar

Igual que putc(stdout).

scanf,fscanf,sscanf

Utilizado para introducir entradas.

vfscanf,vscanf,vsscanf Tambin utilizado para introducir entradas.

setbuf

Esta funcin es equivalente a la funcin setvbuf pasando los valores _IOFBF para modo y BUFSIZ para tamao, o (si acumulador es un puntero nulo), con el valor _IONBF para modo.

setvbuf

Slo puede ser usada despus de que el stream apuntado por stream ha sido asociado con un fichero abierto y antes de otra operacin cualquiera es llevada acabo al stream. El argumento modo determina cmo stream ser almacenado segn lo siguiente: _IOFBF ocasiona la entrada/salida a ser completamente almacenado; _IOLBF ocasiona la entrada/salida a almacenar por lneas; _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 acumulacin adjudicada por la funcin setvbuf. El argumento tamao especifica el tamao del array.

tmpnam

Genera una cadena de caracteres que es un nombre vlido para ficheros y que no es igual al nombre de un fichero existente. La funcin tmpnam genera una cadena diferente cada vez que es llamada, hasta un mximo de TMP_MAX veces. Si la funcin es llamada ms veces que TMP_MAX, entonces el comportamiento de la funcin est definido segn la implementacin del compilador.

ungetc

puts [editar]Constantes

Imprime una de cadena de caracteres.

miembro

Las constantes definidas en el fichero cabecera stdio.h son:

Nombre

Descripcin

EOF

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

BUFSIZ

Entero que indica el tamao del buffer utilizado por la funcin setbuf().

FILENAME_MAX

Tamao mximo de la cadena de caracteres que contienen el nombre de un fichero para ser abierto

FOPEN_MAX

Nmero mximo de ficheros que pueden estar abiertos simultneamente.

_IOFBF

Abreviatura de input/output fully buffered (buffer entrada/salida totalmente lleno); es un entero que se puede pasar como parmetro de la funcin setvbuf()para requerir bloqueo del buffer en la entrada y salida del stream abierto.

_IOLBF

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

_IONBF

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

L_tmpnam

Tamao de la cadena de caractres con la longitud suficiente para almacenar un nombre de fichero temporal generado por la funcin tmpnam().

NULL

Macro que representa la constante puntero nulo; representa un valor de puntero que no apunta a ninguna direccin vlida de objeto alguno en memoria.

SEEK_CUR

Entero que se puede pasar como parmetro a la funcin fseek() para indicar posicionamiento relativo a la posicin actual del fichero.

SEEK_END

Entero que se puede pasar como parmetro a la funcin fseek() para indicar posicionamiento relativo al final del fichero.

SEEK_SET

Entero que se puede pasar como parmetro a la funcin fseek() para indicar posicionamiento relativo al inicio del fichero.

TMP_MAX

El nmero mximo de nombres de ficheros nicos generables por la funcin tmpnam().

[editar]Variables

miembro

El fichero de cabecera stdio.h define las siguientes variables:

Nombre

Descripcin

stdin

Puntero a FILE que referencia la entrada estndar, normalmente el teclado.

stdout Puntero a FILE que referencia la salida estndar, normalmente el monitor.

stderr Puntero a FILE que referencia la salida de error estndar, normalmente el monitor. [editar]Tipos

miembro

Los tipos de datos definidos en el fichero de cabecera stdio.h son:

FILE - estructura que contiene informacin sobre el fichero o stream (flujo) de texto necesario
para realizar las operaciones de entrada/salida sobre l. incluye:

posicin actual de stream indicador de fin de fichero (EOF) indicador de error puntero al buffer del stream

fpos_t - tipo no-array capaz de identificar unvocamente la posicin de cada byte en un


archivo

size_t - tipo entero sin signo (positivo); es el tipo devuelto por el operador sizeof

[editar]Vase

tambin

conio.h
From Wikipedia, the free encyclopedia

"Conio" redirects here. For the profanity, see coo on Wiktionary. conio.h is a C header file used mostly by MS-DOS compilers to provide console input/output.[1] It is not described in The C Programming Language book, and it is not part of the C standard library, ISO C nor is it defined by POSIX. This header declares several useful library functions for performing "console input and output" from a program. Most C compilers that target DOS, Windows 3.x, Phar Lap, DOSX,OS/2, or Win32[2] have this header and supply the associated library functions in the default C library. Most C compilers that target UNIX and Linux do not have this header and do not supply the library functions. Some embedded systems use a conio-compatible library.[3] The library functions declared by conio.h vary somewhat from compiler to compiler. As originally implemented in Lattice C, the various functions mapped directly to the first fewDOS int 21h functions. The library supplied with Borland's Turbo C did not use the DOS API but instead accessed video RAM directly for output and used BIOS interrupt calls. This library also has additional functions inspired from the successful Turbo Pascal one. Compilers that targeted non-DOS operating systems, such as Linux[citation needed], Win32 and OS/2, provided different implementations of these functions.[citation needed] The version done by DJ Delorie for the GO32 extender is particularly extensive.[4] Another example is SyncTERM's ciolib. It is common to include curses.h instead of conio.h, if a program is compiled on a non-DOS operating system. Member functions

kbhit - Determines if a keyboard key was pressed. getch - Reads a character directly from the console without buffer, and without echo. getche - Reads a character directly from the console without buffer, but with echo. ungetch - Puts the character c back into the keyboard buffers. cgets - Reads a string directly from the console. cscanf - Reads formatted values directly from the console. putch - Writes a character directly to the console. cputs - Writes a string directly to the console. cprintf - Formats values and writes them directly to the console. clrscr - Clears the screen.

Compilers provided later than 1989 have prepended an _ to the names, to comply with the requisites of the ANSI C Standard.

[edit]References

Das könnte Ihnen auch gefallen