0% encontró este documento útil (0 votos)
30 vistas19 páginas

Operaciones de lectura y escritura en C

1) El documento describe funciones para operaciones de lectura y escritura en archivos como read(), write() y lseek(). 2) La función read() lee bytes de un archivo y mueve el cursor, while write() escribe bytes y también mueve el cursor. 3) La función lseek() mueve la posición del cursor en un archivo a una distancia especificada desde el origen.

Cargado por

JessiQa De Albaa
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas19 páginas

Operaciones de lectura y escritura en C

1) El documento describe funciones para operaciones de lectura y escritura en archivos como read(), write() y lseek(). 2) La función read() lee bytes de un archivo y mueve el cursor, while write() escribe bytes y también mueve el cursor. 3) La función lseek() mueve la posición del cursor en un archivo a una distancia especificada desde el origen.

Cargado por

JessiQa De Albaa
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd

Operaciones sobre archivos

unistd.h
1ra Parte
Operaciones de lectura y escritura
read
write
RAM
MEMORIA
SECUNDARIA
Sintaxis read
read(descriptor,dir,cantBytes)
Descriptor de
archivos
Direccin de
memoria para
almacenamiento
Cantidad_de_bytes
a leer del archivo
int
Cantidad de bytes realmente ledos
Ejemplo de lectura de un caracter en un
archivo de texto:
int main ()
{
int conex;
char car;
conex=open([Link], 0);
if (conex>0)
{
read(conex,&car,1);
printf(%c,car);
}
else
perror( );
}
Ejemplo de lectura de dos caracteres en un
archivo de texto:
int main ()
{
int conex;
char car;
conex=open([Link], 0);
if (conex>0)
{
read(conex,&car,1);
printf(%c,car);
read(conex,&car,1);
printf(%c,car);
}
else
perror( );
}
O bien

read(conex,cadena,2)
cadena[2]='\0';
printf(%s,cadena);
char cadena[3];
Control de salida a la pantalla de un caracter
int main ()
{
int conex, tot;
char car;
conex=open([Link], 0);
if (conex>0)
{
tot=read(conex,&car,1);
write(1,&car,tot);
tot=read(conex,&car,1);
write(1,&car,tot);
}
else
perror( );
}
1 salida a la pantalla
Descriptor:
Salida a un archivo
Direccin de memoria
de donde enviar los bytes
a la salida indicada.
Cantidad de bytes
a enviar a la salida.
Control de salida a la pantalla de una cadena de
caracteres
int main ()
{
int conex, tot;
char cadena[20];
conex=open([Link], 0);
if (conex>0)
{
tot=read(conex,cadena,5);
write(1,cadena,tot);
}
else
perror( );
}
NOTA 1:
Observe que no hace
falta colocar fin de
cadena en el control
de la salida.

NOTA 2:
Observe que no hay
&, ya que los
vectores son
apuntadores o
direcciones de
memoria.

Sintaxis write
write(descriptor,dir,cantBytes)
Descriptor de
Archivos o salida
Direccin de
memoria para datos de
envo al archivo
Cantidad_de_bytes
a escribir en el archivo
int
Cantidad de bytes realmente escritos
Ejemplo funcin escribir
int main ()
{
int conex;
conex=open([Link], 1);
if (conex>0)
{
write(conex,hola mundo,10);
}
else
perror( );
}
Descriptor de archivo
donde se escribirn
los bytes
Direccin de
memoria de los bytes
a escribir
Cantidad de
bytes a enviar al
archivo.
Observe que el
repositorio o direccin de
memoria est dado como
valor, pero realmente es
una cadena de
caracteres, y una cadena
es una direccin.
Desbordamiento en el archivo
int main ()
{
int conex;
conex=open([Link], 1);
if (conex>0)
{
write(conex,hola mundo,20);
}
else
perror( );
}
Observe el siguiente
problema: se envan
20 bytes al archivo y
el repositorio solo
tiene 10.
Un error de compilacin
int main ()
{
int conex, tot;
char car='5';
conex=open([Link], 1);
if (conex>0)
{
write(conex,5,1);
}
else
perror( );
}
El 2do parmetro debera ser una
direccin de memoria:
un apuntador o la direccin de una
variable.
Conclusiones 1ra Parte
La funcin read lee bytes de un archivo a partir de la
posicin donde se encuentre el cursor, devuelve la cantidad de
bytes que realmente pudo leer, y mueve el cursor.


La funcin write escribe en la pantalla o en un archivo,
dependiendo donde se desee, a partir de donde se encuentre
el cursor en ese momento, escribe en ese dispositivo la
cantidad de bytes deseada, devuelve la cantidad de bytes que
realmente pudo escribir, y mueve el cursor.

Nota Importante:
La declaracin de las variables debe hacerse pensando en lo
que se desea leer o escribir, estas deben ser del tipo y tamao
de lo que se espera hacer.

Realizar los siguientes ejercicios
1.-Leer de un archivo de texto solo 37 caracteres.
2.-Leer un archivo de texto y contar las veces que se
encuentra la letra a y mostrar el total en pantalla.
[Link] al usuario su nombre y escribirlo al inicio del
archivo.
4.-Escribir un nombre de persona al final del archivo y
separarlos con coma.
2a Parte
Operacin con el cursor
lseek
Sintaxis lseek
lseek(descriptor,distancia,origen)
Descriptor de
archivos
Distancia a recorrer en
Bytes, a partir del origen.
0 inicio del archivo
1 poscin actual
2 final del archivo
long
Devuelve la posicin del cursor
Ejemplo de uso de lseek
int main ()
{
int conex;
char car;
conex=open([Link], 1);
if (conex>0)
{
lseek(conex,0,2);
write(conex,escribo al final,16);
}
else
perror( );
}
Ejemplo de uso de lseek
int main ()
{
int conex,i;
char cadena[30],car;
conex=open([Link], 2);
if (conex>0)
{
lseek(conex,0,2);
for (i=0; i<5; i++)
{
printf(\nCapture una palabra);
scanf(%s,cadena);
write(conex,cadena,strlen(cadena));
write(conex,;,1);
}
lseek(conex,0,0);
while((read(conex,&car,1)>0)
write(1,&car,1);
close(conex);
}
else
perror( );
}
Enva el cursor al final del archivo
En cada ejecucin del programa solicita 5
palabras y las escribe al final del archivo.
Escribe en el archivo
solo los caracteres
capturados por el
usuario NO el tamao
de la cadena.
string.h
Escribe en el archivo un punto y coma despus
de cada palabra.
Mueve el cursor al inicio del archivo
Lee de un caracter hasta fin de archivo
Escribe en pantalla el caracter leido
Cierra al archivo
Mueve el cursor a una posicin
especfica
Hola mundo






Archivo
Posiciona el cursor al inicio del archivo, debajo
de la H
lseek(fd,5,0);
Posiciona el cursor debajo de la m
lseek(fd,0,0);
lseek(fd,0,2);
Posiciona el cursor al final del archivo
Calcular el tamao de un archivo
int total;
total=lseek(conex,0,2);
Enviar primero el cursor al final del
archivo
Almacenar en una variable el
valor de retorno, que ser la
posicin final del archivo, y ese
es el tamao.

También podría gustarte