C/Visual C - Problema con archivos binarios en C

 
Vista:
sin imagen de perfil
Val: 22
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con archivos binarios en C

Publicado por mefesto (8 intervenciones) el 10/07/2020 02:00:04
En un programa que tengo quiero guardar un arreglo de estructuras en un archivo binario, el problema es que solo se me guarda parcialmente la información , dejando sin registrar las otras estructuras.

Codigo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
 
typedef struct
{
	char nombre[50];
	char direccion[50];
}EMPLEADOS;
 
void entradaDatos(EMPLEADOS *p);
 
int main()
{
	FILE* pf;
	int des = 0;
	do
	{
		int op;
		printf("\n******************************\n");
		printf("Menu de opciones : \n");
		printf("a).Marca 1 para anadir empleado\nOpcion : ");
		scanf("%d", &op);
		if (op == 1)
		{
			EMPLEADOS *p;
			pf = fopen("datos.bin", "ab");
			if (pf == NULL)
			{
				printf("ERROR");
				return -1;
			}
			int num;
			printf("Numero de empleados a ingresar = ");
			scanf("%d", &num);
			p = (EMPLEADOS*)malloc(num * sizeof(EMPLEADOS));
			for (int i = 0; i < num; i++)
				entradaDatos(p + i);
			fwrite(p, sizeof(p), num, pf);
			fclose(pf);
		}
		printf("\nAgregar otro mas ? (S/N): ");
		scanf(" %d", &des);
	} while (des);
	return 0;
}
 
void entradaDatos(EMPLEADOS *p)
{
	printf("\nNombre empleado : ");
	scanf(" %[^\n]s", p->nombre);
	fflush(stdin);
	printf("Direccion empleado : ");
	scanf(" %[^\n]s",p->direccion);
}

Fin codigo.

Agradezco su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 319
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Problema con archivos binarios en C

Publicado por Rodrigo (91 intervenciones) el 10/07/2020 05:43:21
En el fwrite, cambia sizeof(p) por sizeof(EMPLEADOS)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar