Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda porfavor

Estas en el tema de ayuda porfavor en el foro de C/C++ en Foros del Web. hola a todos.... mi problema es que cuando quiero crear un nuevo archivo me sale """ error al abrir:agenda.dat""", porque y como hago para creara ...
  #1 (permalink)  
Antiguo 16/08/2009, 15:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 1
Antigüedad: 14 años, 8 meses
Puntos: 0
ayuda porfavor

hola a todos.... mi problema es que cuando quiero crear un nuevo archivo me sale """ error al abrir:agenda.dat""", porque y como hago para creara este archivoooo!!!! gracias de antemano

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

typedef struct {
char nom[20];
char apep[20];
char apem[20];
char tel[10];
char dir[35];
char email[30];
}Amigo;

/*Funciones de Archivo*/
void Crear(void);
void Listar(void);
void Agregar(void);
void Modificar(void);
void Borrar(void);
void Encontrar(void);

/*Nombre del Archivo a guardar*/
char hans[] = "agenda.dat";

FILE *archivo2(char cadena[], int metodo);

void main(){
FILE *mechita;
int opc;
char cad[5];

mechita = archivo2(hans,0);
if( mechita ){
fclose(mechita);
}
else
{
printf("Error: No se pudo abrir el archivo\n");
puts("Presiona cualquier tecla para continuar... y Crear el Archivo\n");
mechita = archivo2(hans,1);
fclose(mechita);
getch();
}

do{
clrscr();
printf("\t\tProyecto Final de Fundamentos de Programacion\n");
printf("\t\t\t\tAgenda de Amigos\n");

printf("\t\t************************************** *****\n");
printf("MENU\n\n");
puts("1. Crear Archivo\n");
puts("2. Agregar\n");
puts("3. Eliminar\n");
puts("4. Listar\n");
puts("5. Buscar\n");
puts("6. Modificar\n");
puts("7. Salir\n");
puts("Opcion: ");
opc = atoi(gets(cad));
while(opc<0 || opc>7) /*Limitando la entrada de las opciones*/
opc = atoi(gets(cad)); //atoi Convierte a una representacion de int
clrscr();
switch(opc)
{
case 1:
Crear();
break;
case 2:
Agregar();
break;
case 3:
Borrar();
break;
case 4:
Listar();
break;
case 5:
Encontrar();
break;
case 6:
Modificar();
break;
}

/*Solo parar cuando sea una de las opciones*/
if(opc<7){
puts("Presiona Cualquier Tecla para ir al Menu Principal\n");
getch();
}


}while(opc!=7);

}



// FUNCION PARA CREAR UN ARCHIVO
/************************************************** ***************
Funcion que sirve para borrar todo el Contenido del Archivo Binario*/
void Crear(void){
FILE *mechita;

mechita = archivo2(hans,0);
if(mechita)
{
printf("Error al abrir: agenda.dat\n");
fclose(mechita);
}
}


/************************************************** ******
Funcion que sirve para imprimir todos los un registros del Archivo Binario*/
void Listar(void){
FILE *mechita;
int i=1;
Amigo aux;
mechita = archivo2(hans,0);
if(!(mechita))
printf("Error de apuertura del archivo agenda.dat");
else{
printf("***** LISTA DE AMIGOS *****\n\n");
while ((fread(&aux, sizeof(aux), 1, mechita))!=0){
printf("---------------------------------------------------------------\n");
printf("DATOS DEL AMIGO # %d\n",i);
printf("Nombre: %s\n",aux.nom);
printf("Apellido Paterno: %s\n",aux.apep);
printf("Apellido Materno: %s\n",aux.apem);
printf("Telefono: %s\n",aux.tel);
printf("Direccion: %s\n",aux.dir);
printf("Email: %s\n",aux.email);
i++;
getch();
}
printf("---------------------------------------------------------------\n");
fclose(mechita);
}
}

/************************************************** ******
Funcion que sirve para agregar un registro dentro del Archivo Binario*/
void Agregar(void){
FILE *mechita;
Amigo aux;
char cad[3];

printf("***** INGRESAR NUEVO AMIGO ******\n\n");
mechita=archivo2(hans,2);
if(!(mechita))
printf("No se puede abrir el archivo agenda.dat");
else{
/*Introduciendo los Datos del Amigo*/
printf("Nombre: \n");
gets(aux.nom);
printf("Apellido Paterno: \n");
gets(aux.apep);
printf("Apellido Materno: \n");
gets(aux.apem);
printf("Telefono: \n");
gets(aux.tel);
printf("Direccion: \n");
gets(aux.dir);
printf("Email: \n");
gets(aux.email);

fwrite(&aux, sizeof(aux), 1, mechita);
printf("---------------------------------------------------------------\n");
fclose(mechita);
}
}


/************************************************** ******
Funcion que sirve para Modificar un registro dentro del Archivo Binario*/
void Modificar(void){
FILE *mechita;
Amigo aux;
int n;
char cadena[25],cad[2];
mechita=archivo2(hans,3);
if(!(mechita))
printf("Error de apuertura del archivo agenda.dat");
else{
printf("Ingrese el Nombre del amigo a modificar: \n");
gets(cadena);

/*Buscando el Amigo dentro del Archivo*/
while ((n=fread(&aux, sizeof(aux), 1, mechita))!=0 && stricmp(aux.nom,cadena)!=0);
if (n==0)
printf("No se encuentra a: %s \n",cadena);
else{
printf("--------------\n");
printf("Nombre: %s \n",aux.nom);
printf("Apellido Paterno: %s \n",aux.apep);
printf("Apellido Materno: %s \n",aux.apem);
printf("Telefono: %s \n",aux.tel);
printf("Direccion: %s \n",aux.dir);
printf("Email: %s \n",aux.email);
printf("--------------\n\n");
printf("***** Modificando *****\n");
printf("Ingrese Nuevo Nombre: \n");
gets(aux.nom);
printf("Ingrese Nuevo Apellido Paterno: \n");
gets(aux.apep);
printf("Ingrese Nuevo Apellido Materno: \n");
gets(aux.apem);
printf("Ingrese Nuevo Telefono: \n");
gets(aux.tel);
printf("Ingrese Nueva Direccion: \n");
gets(aux.dir);
printf("Ingrese Nuevo Email: \n");
gets(aux.email);
printf("--------------\n\n");
printf("Guardado Exitosamente!!!\n");
fseek(mechita,-1*sizeof(aux),SEEK_CUR);
fwrite(&aux, sizeof(aux), 1, mechita);
}
printf("---------------------------------------------------------------\n");
fclose(mechita); //Cerramos el archivo
}
}

/************************************************** ******
Funcion que sirve para borrar un registro dentro del Archivo Binario*/
void Borrar(void){
FILE *mechita,*fd;
Amigo aux;
int encontrado=0;
char cadena[25];

printf("Introduce el nombre del Amigo a borrar: ");
gets(cadena);

printf("Borrando Registros\n");
mechita=archivo2(hans,0);
if(!(mechita))
printf("Error de apuertura del archivo agenda.dat");
else{
fd=archivo2("paso.$$$",1);
if(!(fd))
printf("Error Imposible crear archivo auxiliar");
else{
while ((fread(&aux, sizeof(aux), 1, mechita))!=0)
if(stricmp(aux.nom,cadena)!=0)
fwrite(&aux, sizeof(aux), 1, fd);
else
encontrado=1;
fclose(fd);
}
printf("---------------------------------------------------------------\n");
fclose(mechita);
if(encontrado){
system("del agenda.dat");
system("ren paso.$$$ agenda.dat");
printf("Borrado Exitosamente\n");
}
else{
system("del paso.$$$");
printf("No se encontro en el registro, fallo en la operacion\n");
}
}
}

/******************************************
Funcion para Encontrar un Amigo e imprimir sus datos*/
void Encontrar(void){
FILE *mechita;
Amigo aux;
int n;
char cadena[25];

printf("Introduce el nombre del Amigo que buscas: ");
gets(cadena);
mechita=archivo2(hans,0);
if(!(mechita))
printf("No se puede abrir el archivo agenda.dat\n");
else{
while ((n=fread(&aux, sizeof(aux), 1, mechita))!=0 && stricmp(aux.nom,cadena)!=0);
if (n==0)
printf("No se encuentra a: %s \n",cadena);
else{
printf("DATOS:\n");
printf("Nombres: %s\n",aux.nom);
printf("Apellido Paterno: %s\n",aux.apep);
printf("Apellido Materno: %s\n",aux.apem);
printf("Telefono: %s\n",aux.tel);
printf("Direccion: %s\n",aux.dir);
printf("Email: %s\n",aux.email);
/* getch();*/

}
}
printf("---------------------------------------------------------------\n");

}

/*************************************************
Funcion que Carga el Archivo y regresa un apuntador con que se va a manejar el Archivo
Recibe: El nombre del Archivo , Y el mйtodo con que se va abrir el Archivo
Un Apuntador tipo Archivo, 0 - Solo Lectura , 1 - Para crearlo de nuevo desde cero,
2 - Anadir Informacion, 3 - para Lectura y Escritura.
Regresa: El apuntador de Tipo FILE, con el cual se abrio*/
FILE *archivo2(char cadena[], int metodo){
FILE *x;
switch(metodo){
case 0:
x = fopen(cadena,"rb");
break;
case 1:
x = fopen(cadena,"wb");
break;
case 2:
x = fopen(cadena,"ab");
break;
case 3:
x = fopen(cadena,"r+b");
break;
}
return x;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:21.