Investigación Documental

Páginas: 8 (1875 palabras) Publicado: 5 de diciembre de 2012
Creación de un archivo de manera aleatoria:

La funcion fseek() permite tratar los ficheros como vectores, moviéndose directamente a un byte determinado del fichero abierto por fopen(). En este caso es necesario utilizar funciones que permitan posicionar el puntero del fichero.

Los argumentos de fseek() son los siguientes:

int fseek (FILE *pf, long int desplazamiento, int modo)

Endonde :
* pf es el puntero a fichero.
* desplazamiento indica la distancia a que debemos movernos desde el punto de comienzo. Este parámetro debe declararse de tipo long (L) y puede ser positivo o negativo (movimiento hacia delante o hacia atrás).
* modo es el indicador del punto de referencia para el desplazamiento y puede ser:

1. SEEK_SET ó 0: principio del fichero
2.SEEK_CUR ó 1: posición actual
3. SEEK_END ó 2: final del fichero

La función fseek() devuelve el valor 0 si todo ha ido bien, y devuelve el valor -1 si ha habido algún error.

En esta función se utilizan las mismas funciones para lectura y escritura de ficheros de texto de acceso secuencial:
* fscanf
* fgets
* fprintf

1.
Supongamos que el fichero fichero.txt contiene lacadena “Este es el texto del fichero”. Este programa lee diversas palabras del mismo:
Este
1
Este
1
es
2
es
2
el
3
el
3
texto
4
texto
4
del
5
del
5
fichero
6
fichero
6

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main() {
FILE *pf;
char cadena[50];
clrscr();
pf = fopen("c:\\fichero.txt", "r"); /*abre el archivo enmodo lectura*/
fscanf (pf, "%s", cadena); /*lee desde el fichero la primera palabra Este*/
printf ("Primera palabra: %s\n", cadena); /*Este*/
fseek (pf, 4, SEEK_CUR); /*el puntero apunta actualmente al inicio del archivo y avanza 4
bytes a la derecha*/
fscanf (pf, "%s", cadena); /*captura la palabra y la guarda en cadena*/printf ("Tercera palabra: %s\n", cadena); /*texto*/
fseek (pf, -7, SEEK_END); /**/
fscanf (pf, "%s", cadena);
printf ("Ultima palabra: %s\n", cadena); /*fichero*/
fseek (pf, 11, SEEK_SET);
fscanf (pf, "%s", cadena);
printf ("Cuarta palabra: %s\n", cadena); /*texto*/
getch();
fclose (pf);
getch();
}

Salida del programa:

Primera palabra: Este
Tercera palabra: elÚltima palabra: fichero
Cuarta palabra: texto
2.
Escribir datos directamente a un archivo de acceso directo

#include<stdio.h>
#include<conio.h>

struct clientedatos{
int numcta;
char papellido[15];
char nombre[10];
int balance;
};

void main(void)
{

struct clientedatos cliente;
FILE *cfptr;
clrscr();
if((cfptr = fopen("credito.txt","w+")) == NULL)
{printf("El archivo no pudo ser abierto");
getch();
}
else
{
printf("Introduzca número de cuenta (1 hasta 100, o 0 para salir)\n\n");
scanf("%d",&cliente.numcta);
while(cliente.numcta != 0)
{
printf("Introduzca Apellido, Nombre y Balance: \n");
scanf("%s %s %d",&cliente.papellido,&cliente.nombre,&cliente.balance);
fseek(cfptr,(cliente.numcta - 1) *sizeof(struct clientedatos), SEEK_SET);
fwrite(&cliente, sizeof(struct clientedatos), 1,cfptr);
printf("Introduzca número de cuenta(Para salir presione 0): \n");
scanf("%d",&cliente.numcta);
}
}
fclose(cfptr);
}

Nota: Posiciona el apuntador de posición de archivo para el archivo referenciado por cfptr, a la posición de bytes calculada por (cliente.numcta –1) *sizeof(struct clientedatos), el valor de esta expresión se conoce como desplazamiento. Dado que el número de cuenta esta entre 1 y 100 pero las posiciones de bytes ene l archivo empiezan en 0, al calcular la posición de bytes dentro del registro se resta 1 del número de cuenta. Entonces para el registro 1 el apuntador de posición de archivo se define al byte 0 del archivo.

Como leer datos...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Investigacion Documental
  • Investigacion Documental
  • Investigacion Documental
  • Investigacion Documental
  • investigacion documental
  • Investigación Documental
  • investigacion documental
  • Investigacion Documental

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS