Título: cargar struct dentro de una matriz Publicado por: eriss_15 en 17 Mayo 2012, 22:43 pm Hola, quería saber si alguien me podría ayudar con esto...
Tengo q hacer un estructura q contenga 3 datos y esta misma por una función cargarla dentro de una matriz. esa matriz después me va a servir para actualizar un archivo, q solo se actualiza si el tipo es distinto de 99 y la producción distinta de 0 #include <conio.h> #include <stdio.h> #define TAM 3 typedef struct { int tipo; float produccion; float valor; }t_parcela; void ver_archivo(FILE*); void cargar_matriz(t_parcela*[][TAM]); void main() { int i,j; FILE*pf; t_parcela parcela[TAM][TAM]; cargar_matriz(parcela); pf=fopen("campo.dat","w+b"); { for(i=0;i<TAM;i++) for(j=0;j<TAM;j++) { if(parcela[j].produccion!=0 && parcela[j].tipo!=99) { fseek(pf,((i*TAM)+j+1)*sizeof(t_parcela),0); fwrite(&parcela[j].tipo,sizeof(int),1,pf); fwrite(&parcela[j].produccion,sizeof(float),1,pf); fwrite(&parcela[j].valor,sizeof(float),1,pf); fseek(pf,(-1L)*sizeof(t_parcela),1); fseek(pf,0,1); } } } fclose(pf); ver_archivo(pf); getch(); } void cargar_matriz(t_parcela *p[TAM][TAM]) { int i,j; for(i=0;i<TAM;i++) for(j=0;j<TAM;j++) { puts("Escriba el tipo de grano(entero de 1 a 5)"); scanf("%d",&p[j]->tipo); puts("Escriba la produccion obtenida"); scanf("%f",&p[j]->produccion); puts("Escriba el valor de la produccion"); scanf("%f",&p[j]->valor); } } void ver_archivo(FILE*pf) { t_parcela parcela; pf=fopen("campo.dat","rb"); fread(&parcela,sizeof(t_parcela),1,pf); while(!feof(pf)) { printf("%d",parcela.tipo); printf("%f",parcela.produccion); printf("%f",parcela.valor); fread(&parcela,sizeof(t_parcela),1,pf); } fclose(pf); } el programa sin querer cargar la matriz anda barbaro pero quiero cargarle un par de datos y despues ver el archivo para ver si al grabar quedo bien,,, Desde ya Graciaaaas..! Título: Re: cargar struct dentro de una matriz Publicado por: exel en 18 Mayo 2012, 06:33 am De acuerdo a lo que dices, he corregido errores potenciales del codigo, aunque no estoy conforme porque no se ajusta a especificaciones estandar.
No lo he probado pero creo que esta bien, sin embargo observa las correcciones que hice. Código
Antes te sugiero que modifiques las salidas de los printf() agregando espacios como saltos de lineas para que puedas leer mejor los resultados. Saludos |