Respecto al modo de apertura de archivos en C tengo la siguiente duda:
Cuando abro un archivo con la instruccion: fopen("Empleados.txt","a+"), e leido que el modo de lectura a+ permite la lectura/escritura/añadidura.... Osea que si realizo la lectura, se realiza desde el inicio...y si seguidameente realizo la escritura lo hace al final??..osea ¿que el puntero del archivo se mueve del inicio y hace un salto al final??...y si vuelvo a leer...el puntero regresa al inicio??...o lee desde donde se quedo, osea desde el final???... :s Esto me marea...porfas alguien que me ayude...
Necesito aclarar esta duda urgente porque tengo un trabajo en donde necesito crear y llenar un archivo con un conjunto de numeros de tal manera que no se repita ninguno de ellos...por eso cada vez que ingreso un numero...debo leer el archivo desde el inicio al final y ver que el numero actual no coincida con ningun numero ingresado anteriormente...y si el numero no concide...recien puedo escribirlo en el archivo...para eso deberia abrir el archivo en modo lectura escritura que me permita añadir nuevos numero que no se repitan...el profe me dijo que lo hago en opcion a+...pero...no me funciona...el codigo es el siguiente...haber si me ayudan...
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
struct trabajador
{
int cod;
};
int main()
{
FILE *ftrabajador;
struct trabajador f1;
int codigo;
char resp;
do{
clrscr();
ftrabajador=fopen("Emplados.DAT","a+b");
if(ftrabajador==NULL)
{
gotoxy(5,7); cout<<"Archivo no existe, sera creado";
ftrabajador=fopen("Empleados.DAT","a+b");
}
gotoxy(5,5); cout<<"CODIGOS ";
gotoxy(5,8); cout<<"Codi:"; cin>>codigo;
fread(&f1,sizeof(f1),1,ftrabajador);
while(!feof(ftrabajador))
{
if(codigo==f1.cod)
{
gotoxy(5,9); textcolor(LIGHTRED); cprintf("Ya esta registrado"); getche();
return 0;
}
fread(&f1,sizeof(f1),1,ftrabajador);
}
f1.cod=codigo;
fwrite(&f1,sizeof(f1),1,ftrabajador);
fclose(ftrabajador);
gotoxy(5,20); cout<<"Otra bez? "; cin>>resp;
}while(resp=='s' || resp=='S');
return 0;
}
Compilador: Borland C++ 5.02