standard ANSI de C.
Antes de comenzar a describir las funciones de biblioteca del standard ANSI de C,
unos pequeños comentarios:
Existen muchas mas funciones de las aquí descritas, pero este pequeño conjunto de
funciones es lo suficientemente amplio como para que puedan realizarse todas las
operaciones necesarias.
Las funciones se encuentran clasificadas de acuerdo a la función que realizan (entrada/
salida de datos, etc.), con el fin de facilitar su uso.
Las funciones se presentan de la siguiente forma:
Nombre de la función: fclose
Fichero de includes donde se encuentra su prototipo: #include <stdio.h>
Formato de la función: int fclose(FILE *f);
Breve descripción de la función.
A.1 - Funciones de entrada y salida de datos.
fclose
#include <stdio.h>
int fclose(FILE *f);
La función fclose() cierra el archivo asociado a la variable f y vuelca su buffer
al disco. Después de un fclose(), la variable f queda desligada del archivo y cualquier
buffer que tuviera asignado se libera. Si fclose() se ejecuta de forma correcta, devuelve
el valor cero, en cualquier otro caso devuelve un valor distinto de cero.
feof
#include <stdio.h>
int feof(FILE *f);
La función feof() comprueba el indicador de posición del archivo para
determinar si se ha alcanzado el final del archivo asociado a f. Un valor distinto de
cero supone que el indicador de posición del archivo esta en el final del mismo, en caso
contrario se devuelve el valor cero.
ferror
#include <stdio.h>
int ferror(FILE *f);El lenguaje de programación C
La función ferror() comprueba si existen errores en alguna operación realizada
sobre el archivo asociado a f. Un valor devuelto de cero indica que no hay errores, un
valor distinto de cero indica la existencia de errores. Los indicadores de error
asociados a f permanecen activos hasta que se cierra el archivo o se llama a las
funciones rewind() o perror().
fflush
#include <stdio.h>
int fflush(FILE *f);
La función fflush() vacía el buffer asociado a la variable f. Si el archivo ha sido
abierto para escritura, fflush() vacía el contenido del buffer de salida en el archivo. Si
el archivo ha sido abierto para lectura, fflush() tan solo vacía el contenido del buffer de
entrada. Un valor de cero indica que el buffer se ha vaciado de forma correcta, un valor
distinto de cero indica un error. Todos los buffers se vuelcan automáticamente cuando
un programa termina de forma correcta, cuando están llenos, o cuando se cierra el
archivo (ver fclose()).
fgetc
#include <stdio.h>
int fgetc(FILE *f);
La función fgetc() devuelve el carácter del archivo de entrada asociado a f, e
incrementa el indicador de posición del archivo. El carácter se lee como unsigned char
y se convierte a int, por lo cual no existe ningún problema en asignarle el valor
devuelto por fgetc() a una variable de tipo carácter (char).
fgets
#include <stdio.h>
char *fgets(char *cad,int num,FILE *f);
La función fgets() lee como máximo hasta num-1 caracteres del archivo
asociado a f y los sitúa en el array apuntado por cad. Los caracteres se leen hasta que
se recibe un carácter de salto de linea, un EOF (fin de fichero) o hasta que se llega al
limite especificado. Después de leídos los caracteres, se pone automáticamente un
carácter de nulo inmediatamente después del ultimo carácter leído. Si se termina la
lectura por un carácter de salto de linea, dicho carácter se guarda como parte de cad. Si
tiene éxito, fgets() devuelve un puntero a la dirección de cad. En caso de error devuelve
un puntero nulo (NULL).
fopen
#include <stdio.h>
FILE *fopen(const char *nombre,const char *modo);
La función fopen() abre un archivo cuyo nombre viene dado por nombre y
devuelve un puntero a una estructura de tipo FILE que se le asocia en la apertura. ElEl lenguaje de programación C
tipo de operaciones permitidas en el archivo están definidas por el valor de modo. Los
valores permitidos de modo son:
Modo Descripción
r Abrir un archivo para lectura.
w Crear un archivo para escritura.
a Abrir un archivo para añadir.
rb Abrir un archivo binario para lectura.
wb Crear un archivo binario para escritura.
ab Abrir un archivo binario para añadir.
rt Abrir un archivo de texto para lectura.
wt Crear un archivo de texto para escritura.
at Abrir un archivo de texto para añadir.
r+ Abrir una archivo para lectura/escritura.
w+ Crear un archivo para lectura/escritura.
a+ Abrir un archivo para leer/añadir.
r+b Abrir un archivo binario para lectura/escritura.
w+b Crear un archivo binario para lectura/escritura.
a+b Abrir un archivo binario para leer/añadir.
r+t Abrir un archivo de texto para lectura/escritura.
w+t Crear un archivo de texto para lectura/escritura.
a+t Abrir un archivo de texto para leer/añadir.
Tabla A.1.1: Modos de apertura de un fichero con la función fopen().
Si fopen() tiene éxito en abrir el archivo, devuelve un puntero de tipo FILE, en
caso contrario devuelve un puntero nulo (NULL).
fprintf
#include <stdio.h>
int fprintf(FILE *f,const char *formato,...);
La función fprintf() escribe en el archivo asociado a f los valores de los
argumentos que componen su lista de argumentos según se especifica en la cadena
formato. Devuelve un número que indica el número de caracteres escritos. Si se
produce un error se devuelve un valor negativo. Para una explicación sobre sus
argumentos consúltese la función printf().
fputc
#include <stdio.h>
int fputc(int c,FILE *f);
La función fputc() escribe el carácter especificado por c en el archivo
especificado por f a partir de la posición actual del archivo, y entonces incrementa el
indicador de posición del archivo. Aunque c tradicionalmente se declara de tipo int, es
convertido por fputc() a unsigned char, por lo cual en lugar de un int se puede usar
como argumento un char o unsigned char. Si se utiliza un int, la parte alta del mismoEl lenguaje de programación C
será ignorada y no se escribirá. Si se ejecuta de forma correcta, fputc() devuelve el
valor c, en caso de error devuelve el valor EOF.
fputs
#include <stdio.h>
int fputs(const char *cad,FILE *f);
La función fputs() escribe el contenido de la cadena de caracteres apuntada por
cad en el archivo especificado por f. El carácter nulo de terminación de la cadena no es
escrito. En caso de error fputs() devuelve el valor EOF.
fread
#include <stdio.h>
int fread(void *buf,size_t tam,sise_t cuenta, FILE *f);
La función fread() lee cuenta numero de elementos, cada uno de ellos de tam
bytes de longitud, del archivo asociado a la variable f, y los sitúa en el array apuntado
por buf. El indicador de posición del archivo se incrementa en el número de bytes
leídos. La función fread() devuelve el número de elementos realmente leídos. Si se leen
menos elementos de los pedidos en la llamada se produce un error. La función fread()
funciona de forma correcta en archivos abiertos en modo binario; en archivos abiertos
en modo texto, pueden producirse ciertos cambios de caracteres (salto de carro seguido
de salto de linea se convierte en salto de linea, etc.).
fscanf
#include <stdio.h>
int fscanf(FILE *f,const char *formato,...);
La función fscanf() lee del archivo asociado a la variable f de igual forma que la
función scanf() lo realiza del teclado. Devuelve el numero de argumentos a los que
realmente se asigna valores. Este número no incluye los campos ignorados. Si se
produce un error antes de realizar la primera asignación se devuelve el valor EOF. Para
mas información consultar la función scanf().
fseek
#include <stdio.h>
#int fseek(FILE *f,long desp,int origen);
La función fseek() coloca el indicador de posición del archivo asociado a la
variable f de acuerdo a los valores dados por origen y desp. Su objetivo es dar soporte
a las operaciones de E/S de acceso directo. El valor de origen debe ser una de estas
constantes, definidas en stdio.h:
Origen Nombre de la constante Valor
Comienzo del archivo SEEK_SET 0
Posición actual SEEK_CUR 1El lenguaje de programación C
Final del archivo SEEK_END 2
Tabla A.1.2: Valores del origen en la función fseek().
La función fseek() devuelve un valor de cero si sucede correctamente, en caso
contrario el valor devuelto es distinto de cero.
Puede utilizarse fseek() para mover el indicador de posición en el archivo a
cualquier lugar del mismo, incluso mas alla del final del mismo, pero es un error
intentar situarse antes del comienzo del archivo.
ftell
#include <stdio.h>
long ftell(FILE *f);
La función ftell() devuelve el valor actual del indicador de posición del archivo
asociado a la variable f. Para archivos binarios, el valor devuelto es el número de bytes
desde el principio del archivo. Para archivos de texto solo debe usarse como argumento
para la función fseek(), ya que, debido a que secuencias de caracteres como retorno de
carro y salto de línea pueden sustituirse por un salto de línea, el tamaño aparente del
archivo puede variar. Si falla la función ftell() devuelve el valor -1L.
fwrite
#include <stdio.h>
int fwrite(const void *buf,size_t tam,size_t cuenta,FILE *f);
La función fwrite() escribe cuenta numero de elementos, cada uno de ellos de
tam bytes de longitud, del array apuntado por buf al archivo asociado a la variable f. El
indicador de posición del archivo se incrementa en el número de bytes escritos. La
función fwrite() devuelve el número de elementos realmente escritos. Si se escriben
menos elementos de los pedidos en la llamada se produce un error. La función fwrite()
funciona de forma correcta en archivos abiertos en modo binario; en archivos abiertos
en modo texto, pueden producirse ciertos cambios de caracteres (salto de carro seguido
de salto de linea se convierte en salto de linea, etc.).
getc
#include <stdio.h>
int getc(FILE *f);
La función getc() devuelve del archivo de entrada asociado a la variable f el
siguiente carácter desde la posición actual e incrementa el indicador de posición del
archivo. El carácter se lee como unsigned char y se transforma en un int. Si se alcanza
el final de archivo devuelve el carácter EOF. Debido a que EOF es un valor valido
para archivos abiertos en modo binario, debe utilizarse la función feof() para
comprobar el final del fichero en dichos archivos.
getsEl lenguaje de programación C
#include <stdio.h>
char *gets(char *cad);
La función gets() lee caracteres desde stdin (entrada standard, normalmente el
teclado), y los sitúa en el array de caracteres apuntado por cad. Se leen caracteres
hasta que se recibe un carácter de salto de línea o una marca de EOF. El carácter de
terminación se transforma, automáticamente, en el carácter nulo para terminar la
cadena. Si se ejecuta correctamente, gets() devuelve un puntero a cad. En caso de error
se devuelve un puntero nulo (NULL). No existe límite al número de caracteres que
leerá gets(), por lo cual le corresponde al programador asegurarse de que no se
sobrepasa el tamaño del array apuntado por cad.
perror
#include <stdio.h>
int perror(const char *cad);
La función perror() convierte el valor de la variable global errno en una cadena
de caracteres y escribe esta cadena en stderr (salida standard de error). Si el valor de
cad no es nulo (NULL), se escribe primero la cadena apuntada por cad, seguida de dos
puntos y el mensaje de error asociado.
printf
#include <stdio.h>
int printf(const char *formato,...);
La función printf() escribe en stdout (salida standard, generalmente la pantalla),
los argumentos que componen la lista de argumentos bajo el control de la cadena
apuntada por formato. La cadena apuntada por formato consta de dos tipos de
elementos. El primer tipo esta constituido por los caracteres que se mostraran en
pantalla. El segundo tipo contiene las ordenes de formato que describen la forma en
que se muestran los argumentos. Una orden de formato comienza por el signo %, y le
sigue el código de formato. Las ordenes de formato son:
Especificador Descripción
%c Carácter.
%d Enteros decimales con signo.
%i Enteros decimales con signo.
%e Punto flotante en notación científica (e minúscula).
%E Punto flotante en notación científica (E mayúscula).
%f Punto flotante.
%g Usar el más corto de %e y %f.
%G Usar el más corto de %E y %f.
%o Octal sin signo.
%s Cadena de caracteres.
%u Enteros decimales sin signo.
%x Hexadecimales sin signo (letras minúsculas).El lenguaje de programación C
%X Hexadecimales sin signo (letras mayúsculas).
%p Mostrar un puntero.
%n El argumento asociado es un puntero a un entero, el cual recibirá el
número de caracteres escritos.
%% Imprimir el signo %.
Tabla A.1.3: Especificadores de formato de la función printf().
Existen ademas los modificadores h (short), l (long) y L. El modificador h
(short) se puede aplicar a los tipos d, i, o, u., x y X, y le dice que el tipo de datos es
short int o unsigned short int según el caso. El modificador l (long), se puede aplicar a
los casos anteriores, significando que el tipo de datos es long int o unsigned long int,
pero, además, se puede aplicar a los tipos e, E, f y g, indicando que el tipo de datos es
double. El modificador L se puede aplicar a los tipos e, E, f y g, y dice que el tipo de
datos es long double.
La función printf() devuelve el número de caracteres realmente escritos. Un
valor negativo indica que se ha producido un error.
putc
#include <stdio.h>
int putc(int c,FILE *f);
La función putc() escribe el carácter contenido en el byte menos significativo
de c en el archivo apuntado por f. Dado que los argumentos de tipo char son
transformados en argumentos de tipo int en el momento de la llamada, se pueden
utilizar variables de tipo char para el argumento c de putc(). La función putc()
devuelve el carácter escrito. En caso de error devuelve EOF, y, dado que EOF es un
valor valido en archivos abiertos en modo binario, se recomienda en dicho tipo de
archivos el uso de la función ferror() para la comprobación de errores.
puts
#include <stdio.h>
int puts(char *cad);
La función puts() escribe la cadena apuntada por cad en el dispositivo de salida
standard. El carácter nulo de terminación de cadena se transforma en un carácter de
salto de línea. Si tiene éxito, se devuelve un valor no negativo. En caso de error se
devuelve el valor EOF.
rewind
#include <stdio.h>
void rewind(FILE *f);
La función rewind() mueve el indicador de posición del archivo apuntado por f
al principio del mismo. La función rewind() inicializa también los indicadores de error
y de fin de archivo asociados a la variable f. Ningún valor es devuelto.El lenguaje de programación C
scanf
#include <stdio.h>
int scanf(const char *formato,...);
La función scanf() es una rutina de propósito general que lee de stdin
(dispositivo standard de entrada, normalmente el teclado). Puede leer los tipos de datos
que haya y transformarlos en el formato interno adecuado. Es la inversa de la función
printf(). La cadena de control especificada por formato consiste en tres clases de
caracteres:
• Especificadores de formato.
• Caracteres de espacio en blanco.
• Caracteres que no sean espacios en blanco.
Los especificadores de formato de entrada están precedidos por el signo %, y dicen
a scanf() que tipo de datos van a ser leídos a continuación. Los especificadores de
formato validos son:
Especificador Descripción.
%c Leer un único carácter.
%d Leer un entero decimal.
%i Leer un entero decimal.
%e Leer un número en punto flotante.
%f Leer un número en punto flotante.
%g Leer un número en punto flotante.
%o Leer un número octal.
%s Leer una cadena de caracteres.
%x Leer un número hexadecimal.
%p Leer un puntero.
%n Recibe un valor igual al número de carácter
leídos.
%u Leer un entero sin signo.
Tabla A.1.4: Especificadores de formato de la función scanf().
Además, es posible utilizar los modificadores h (short), l (long) y L de igual
forma que en la función printf().
Un espacio en blanco en la cadena de control da lugar a que scanf() salte sobre
uno o mas espacios de la cadena de entrada, un espacio en blanco puede ser un espacio,
un tabulador o un salto de línea. Además, un espacio en blanco da lugar, también, a
que scanf() lea, pero no guarde cualquier número de espacios en blanco, incluso cero.
Un carácter que no sea espacio en blanco, da lugar a que scanf() lea y elimine el
carácter asociado. Por ejemplo, %d:%d da lugar a que scanf() lea primero un int,
después lea, y descarte, los dos puntos, y luego lea otro int. Si el carácter especificado
no se encuentra, scanf() termina su ejecución.El lenguaje de programación C
Todas las variables utilizadas para recibir valores a través de scanf() deben ser
pasadas por referencia, o sea, por sus direcciones. Esto supone que los argumentos
deben ser punteros a las funciones.
La presencia del signo * después del signo % y antes del código del formato,
produce que scanf() lea, pero no asigne el valor leído a ninguna variable, por ejemplo:
scanf("%d%*c%d",&x,&y);
Provoca, si la entrada es 10/20, que se le asigne el valor 10 a la variable x, se
lea y descarte el signo /, y después se asigne el valor 20 a la variable y.
La función scanf() devuelve un número igual al de campos que han sido
asignados correctamente, este número no incluye los campos que fueron leídos, pero
no asignados, utilizando el modificador * para eliminar la asignación.
setbuf
#include <stdio.h>
void setbuf(FILE *f, char *buf);
La función setbuf() se utiliza para determinar el buffer del archivo asociado a la
variable f que se utilizara, o bien, si se llama con buf a nulo (NULL), para desactivar el
buffer. Si un buffer va a ser definido por el programador, su tamaño debe ser BUFSIZ,
siendo BUFSIZ una constante definida en el archivo stdio.h. La función setbuf() no
devuelve ningún valor.
setvbuf
#include <stdio.h>
int setvbuf(FILE *f,char *buf,int modo,.size_t tam);
La función setvbuf() permite al programador especificar el buffer, el tamaño y
el modo para el archivo asociado a la variable f. El array de caracteres apuntado por
buf se utiliza como buffer de f para las operaciones de entrada y salida. Si buf es nulo
(NULL), setvbuf() creara su propio buffer, de tamaño tam, mediante una llamada a la
función malloc(). El tamaño del buffer se fija mediante el valor de tam, que debe ser
siempre mayor de cero. La variable modo determina el uso del buffer. Los valores
legales de modo, definidos en stdio.h, son:
Modo Descripción
_IOFBF Modo normal, el buffer se vacía solo cuando se llena (en escritura), o bien,
cuando ya se ha leído todo su contenido (en lectura).
_IOLBF Igual al anterior, solo que el buffer también se vacía cuando se lee o escribe
un retorno de carro.
_IONBF Desactiva el buffer.
Tabla A.1.5: Valores del modo en la función setvbuf().El lenguaje de programación C
La función setvbuf() devuelve un valor de cero si se ejecuta con éxito. En caso
de error, un valor distinto de cero será devuelto.
sprintf
#include <stdio.h>
int sprintf(char *buf,const char *formato,...);
La función sprintf() es idéntica a la función printf(), excepto que la salida
generada se sitúa en el array apuntado por buf. El valor devuelto por la función es igual
al número de caracteres realmente situados en el array. Para una mayor explicación
refiérase a la función printf().
sscanf
#include <stdio.h>
int sscanf(const char *buf,const char *formato,...);
La función sscanf() es idéntica a la función scanf(), excepto que los datos son
leídos del array apuntado por buf. El valor devuelto por la función es igual al número
de campos que hubieran sido realmente asignados. Este número no incluye los campos
que fueron saltados al utilizar el modificador de ordenes de formato *. Para más
detalles vea la función scanf().
ungetc
#include <stdio.h>
int ungetc(int c,FILE *f);
La función ungetc() devuelve el carácter especificado por el byte menos
significativo de c al archivo especificado por f. Este carácter será devuelto en la
siguiente operación de lectura sobre el archivo. Una llamada a fflush() o a fseek()
deshace una operación ungetc() y deshecha el carácter previamente devuelto a la
secuencia de entrada. No se debe usar ungetc() sobre una marca de EOF. El valor
devuelto por la función es igual a c, si la función ha tenido éxito, e igual a EOF, si ha
fallado.
No hay comentarios.:
Publicar un comentario