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

Programa no guarda la estructura en archivo

Estas en el tema de Programa no guarda la estructura en archivo en el foro de C/C++ en Foros del Web. mi problema es el siguente, hice una agenda, pero el archivo no guarda los datos, si alguien me podria a encontrar el error, gracias Código: ...
  #1 (permalink)  
Antiguo 06/07/2011, 19:15
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Programa no guarda la estructura en archivo

mi problema es el siguente, hice una agenda, pero el archivo no guarda los datos, si alguien me podria a encontrar el error, gracias

Código:
#include<stdio.h>

#define TAM 5

typedef struct

{

char nombre[20];
char direccion[60];
int telefono;
char mail[20];

}agenda;



void inicia_agenda(agenda lista[]);
void imprime_agenda(agenda lista[]);
//void elimina_agenda(agenda lista[]);
void cambiar_agenda(agenda lista[]);

int main()

{

	agenda contactos[TAM];
	agenda aux;
	int opc, count=1;
	int fin=TAM, del, i, m;
	char s;
	contactos[0].nombre[0]=0;
	int tmp;
	FILE *fp;
	
	for(i=0;i<TAM;i++)

	{

	contactos[i].nombre[0]=0;

	}

	fopen("archivo.txt","a");

	//fread(contactos, TAM, sizeof(contactos),fp);
do

{
	
	printf(" \n* * * * * M E N U * * * * *  \n");
	printf("1.- Mostrar todos los datos\n");
	printf("2.- Agregar una nota\n");
	printf("3.- Eliminar nota\n");
	printf("4.- Cambiar nota\n");
	printf("5.- Salir\n");
	scanf("%d", &opc);

switch(opc)

{

	case 1: 
		imprime_agenda(contactos);

			

		break;

	case 2:
	
		inicia_agenda(contactos);
		
		break;

	case 3:
		printf("Eliminar por ID: ");
		scanf("%d", &del);

		del--;

		

		for(i=del;i<fin;i++)
	
		{

			contactos[i]=contactos[(i+1)];

		}
		
		contactos[fin-1].nombre[0]=0;

		fin--;

		
		break;

	case 4:

		cambiar_agenda(contactos);
		

		break;

}

}

while(opc!=5);


fwrite(contactos, sizeof(contactos), TAM, fp);

fclose(fp);

return 0;

}



void imprime_agenda(agenda lista[])

{

int  i, count=0;


for(i=0;i<TAM;i++)

{

	
	if(lista[i].nombre[0]!= 0)
	
	{

	printf("\nID: %d", i+1);
	printf("\nNombre: %s", lista[i].nombre);
	printf("\nDireccion: %s", lista[i].direccion);
	printf("\nTelefono: %d", lista[i].telefono);
	printf("\nCorreo Electronico: %s", lista[i].mail);
	printf("\n*****************************************");

	
	}


	
		

}
}

void inicia_agenda(agenda lista[])

{

		int tmp;
		tmp=0;
		
		while((tmp<TAM) && (lista[tmp].nombre[0] != 0)) tmp++;



		if(tmp<TAM)

		{

		printf("\nDame el nombre: ");
		scanf("%s", lista[tmp].nombre);
		printf("\nDame la direccion: ");
		scanf("%s", lista[tmp].direccion);
		printf("\nDame el telefono: ");
		scanf("%d", &lista[tmp].telefono);
		printf("\nDame el correo electronico: ");
		scanf("%s", lista[tmp].mail);
		
		//fin++;	

		}

	
	else
		printf("El arreglo esta lleno");

}

//void elimina_agenda(agenda lista[])

void cambiar_agenda(agenda lista[])

{
		int m;

		printf("Modificar: ");
		scanf("%d",&m);
		m--;

		printf("Nombre ");
		scanf("%s",lista[m].nombre);
		printf("\nDireccion ");
		scanf("%s",lista[m].direccion);
		printf("\nTelefono ");
		scanf("%d",&lista[m].telefono);
		printf("\nCorreo electronico ");
		scanf("%s",lista[m].mail);

}
  #2 (permalink)  
Antiguo 06/07/2011, 19:23
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Programa no guarda la estructura en archivo

el fopen nunca lo asignas a una variable.
deberia ser

fp = fopen("archivo.txt","a");
  #3 (permalink)  
Antiguo 06/07/2011, 20:14
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Respuesta: Programa no guarda la estructura en archivo

gracias pero aun asi no me guarda en el archivo
  #4 (permalink)  
Antiguo 07/07/2011, 09:50
Avatar de MediaMadrugada  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Programa no guarda la estructura en archivo

Ay ya no aguanto! Disculpen! Quiero tambien postear mi code porque tengo el mismo problema y no se como arreglarlo! Como pedo poner un nuevo tema que no encentro la opcion!
  #5 (permalink)  
Antiguo 07/07/2011, 09:54
Avatar de MediaMadrugada  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Programa no guarda la estructura en archivo

Ay lamento que tenga que postear esto por aca pero no veo donde colocar un tema nuevo. Me podrian ayudar???


Yo lo hago en java pero no coje


<html>

<head><title>Agenda</title>






<script>

var contactos= new Array();

function agregarContacto()
{

var contactos = document.getElementById('textarea').value;


nombre=prompt("Introduzca el nombre");
apellidp=prompt("Introduzca el apellido");
telefono=prompt("Introduzca el teléfono");
email=prompt("Introduzca el email");

contactos[contactos.length] = new Array(nombre,apellido,telefono,email);
}

function mostrarContactos()

{

var contactos = document.getElementById('textarea').value;

texto="Estos son tus contactos: \n";

for(x=0; x<contactos.length; x=x+1)
{

texto=texto + x +") "+ contactos [x][0] + " - " + contactos[x][1] + " - "+ contactos [x][2] + " - " + contactos[x][3] +"\n";

}
alert(texto);

fuction eliminarContactos()

{
var contactos = document.getElementById('textarea').value;

alert("Esta es tu lista de contactos.. /n Memorice el número del que quieras eliminar.");
mostrar();
del=prompt('Introduzca el número del que va a eliminar');
fondo= new Array();
for(x=0; x<contactos.length; x=x+1)
{

if(del !=x)

{

fondo[fondo.length] = contactos[x];
}

}
contactos = fondo;

}



}



</script>
</head>

<body>
<center>

<table width="1000" height="0" bgcolor="green">
<tr><td valign="middle"><font face="Mickey" color="#3ADF00"><h1><span style="background-color:#38610B; text-align:center;"><br><p>Agenda creativa agrega tus contactos del coro<p><h7>Andrys Frias</h7>
</br>
</span>
</h1>
</font>
</td></tr>
</table>

<table bgcolor="gray" width="400" height="400">



<td rowspan="3">
<textarea id="textarea" title="Introduzca sus contactos">Agenda</textarea>
</td>


<td>
<div
class="boton"
onmouseover="this.style.background='#3ADF00'"
onmouseout="this.style.background='black'"
onclick='agregarContactos()' title="Agregue a su lista">
Agregar
</div>
</td>



<td>
<div
class="boton"
onmouseover="this.style.background='#3ADF00'"
onmouseout="this.style.background='black'"
onclick='mostrarContactos()' title="Vea su lista">
Mostrar
</div>
</td>


<td>
<div
class="boton"
onmouseover="this.style.background='#3ADF00'"
onmouseout="this.style.background='black'"
onclick='eliminarContactos()' title="Elimine de su lista">
Eliminar
</div>
</td>

<td rowspan="3">
<img src="http://foto.kenosvayabonito.com/wp-content/uploads/2008/12/papeles.jpg" title="Posticks" width="300" height="200"/>
</td>

</table>
  #6 (permalink)  
Antiguo 07/07/2011, 10:12
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Programa no guarda la estructura en archivo

No guarda nada o no guarda lo que quieres??

El fwrite deberia ser asi:

fwrite(contactos, sizeof(agenda), TAM, fp);

Con ese cambio y con el otro que te dije si funciona. Tambien cambia el fopen. Abrilo con la opcion "a+".

Saludos
  #7 (permalink)  
Antiguo 10/07/2011, 20:47
 
Fecha de Ingreso: abril-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Respuesta: Programa no guarda la estructura en archivo

no warda lo ke kiero ke warde, no skribe nada en el archivo, ya hice kambios y nada
  #8 (permalink)  
Antiguo 10/07/2011, 22:57
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Programa no guarda la estructura en archivo

Vos estas esperando que se vea los datos que se guardan al abrir el archivo con el bloc de notas?? Eso no va a suceder...porque lo estas guardando como un archivo binario y no de texto plano...
La clave esta si hace un fread despues, vas a ver que recupera la informa cion como corresponde.

Etiquetas: estructura, programa, arreglos
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 19:28.