Problema con ficheros
Publicado por Sebastián (31 intervenciones) el 16/02/2017 17:09:08
Hola con todos, quisiera que me ayudaran con un problema que tengo, hice un programa que escriba datos en un fichero, y los guarde, posterior a ello abro el fichero, guardo sus datos en una estructura y posterior a ellos imprimo dichos datos por consola, el programa funciona bien, solo que al final luego de imprimir, sale un mensaje de que ha dejado de funcionar, supongo que es por la asignación dinámica, pero no hallo el fallo.
Gracias de antemano por su ayuda.
Gracias de antemano por su ayuda.
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*Escribir un programa que lea el contenido de un archivo de texto en que cada linea contenga los datos que definen al vehiculo, y rellene de esa forma una tabla de variables de tipo
vehiculo. El programa debe comprobar que el numero de lineas que vaya leyendo no supera la dimension de la tabla definida, una vez terminado de leer el archivo debe imprimirse en pantalla
los datos de los vehiculo, y liberarse toda la memoria alojada dinamicamente*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
typedef struct
{
char prop[20];
char apelli[20];
char color[20];
char marca[10];
int anio;
}vehiculo;
void imprimir(vehiculo *p, int n)
{
for(int i=0; i<n;i++)
{
printf("\n\n\nVehiculo %d",i+1);
printf("\n\nNombre de propietario: ");
puts((p+i)->prop);
printf("\nApellido de propietario: ");
puts((p+i)->apelli);
printf("\nColor: ");
puts((p+i)->color);
printf("\nMarca: ");
puts((p+i)->marca);
printf("\nAnio:");
printf("%d",(p+i)->anio);
}
}
int main()
{
int n;
char aux1[20],aux2[10],aux3[10],aux4[10],aux5[10];
printf("Ingrese el numero de autos: ");
scanf("%d",&n);
fflush(stdin);
FILE *fich;
fich=fopen("carros.txt","wt");
if(fich==NULL)
puts("\n- No se puede abrir el fichero");
else
{
for(int i=0;i<n;i++)
{
printf("\n\nAUTO %d",i+1);
printf("\nNombre del propietario: ");
scanf("%s",&aux1);
fflush(stdin);
printf("\nApellido del propietario: ");
scanf("%s",&aux5);
fflush(stdin);
printf("\nColor: ");
scanf("%s",&aux2);
fflush(stdin);
printf("\nMarca: ");
scanf("%s",&aux3);
fflush(stdin);
printf("\nAnio: ");
scanf("%s",&aux4);
fflush(stdin);
fprintf(fich,"%s\t%s\t%s\t%s\t%s\n",aux1,aux5,aux2,aux3,aux4);
}
}
fclose(fich);
vehiculo carro1[n], *p;
p=(vehiculo*)realloc((n*sizeof(vehiculo)));
char str[100],x[20],y[20],z[10],w[5],v[10];
int a,i=0;
fich=fopen("carros.txt","r");
if(fich==NULL)
puts("\n- No se puede abrir el fichero");
else
for(i=0;i<n,feof(fich)==0;i++)
{
fgets(str,100,fich);
sscanf(str,"%s\t%s\t%s\t%s\t%s",x,v,y,z,w);
a=atoi(w);
strcpy((p+i)->prop,x);
strcpy((p+i)->apelli,v);
strcpy((p+i)->color,y);
strcpy((p+i)->marca,z);
(p+i)->anio=a;
}
fflush(stdin);
imprimir(p,n);
free(p);
fclose(fich);
return(0);
}
Valora esta pregunta
0