07/02/11 21:25
dodo154
così dovrebbe andare....
dammi conferma...
dammi conferma...
#include <stdio.h> #include <stdlib.h> void carica(int*, int***); void stampa(int, int**); int main(void) { int **matrice=NULL; int i=0, j; FILE *fp; int N; int *v; fp=fopen("immagine.dat", "wb"); printf("creazione del file binario\n"); do{ printf("inserisci il numero di componenti del vettore: \n"); scanf("%d", &N); }while(N%2==0); v=(int*)malloc(sizeof(int)*N); N=N/2; for(i=0; i<N; i++){ printf("\nInserisci la %d^componente: ",i+1); scanf("%d", &v[i]); fwrite(&v[i],sizeof(int),1,fp); } printf("\n inserisci elemento centrale: "); scanf("%d", &v[i]); fwrite(&v[i],sizeof(int),1,fp); i++; for(j=0;j<N;j++){ printf("\n inserisci la %d^ componente: ", i+1); scanf("%d", &v[i]); fwrite(&v[i],sizeof(int),1,fp); i++; } fclose(fp); printf("\nFile creato...\n"); getchar(); carica(&N, &matrice); stampa(N, matrice); return 0; } void carica(int* N, int*** mat) { FILE* fp; int i,j; int conta=0; int z=0; int* vett; fp=fopen("immagine.dat","rb"); while(!feof(fp)){ conta++; //voglio sapere il numero degli elementi fread(N, sizeof(int), 1, fp); } conta--; conta= conta/2; // ho il numero degli elementi della prima parte rewind(fp); for(i=0;i<conta+1;i++) fread(N,sizeof(int), 1, fp); rewind(fp); //allocazione dinamica vettore conta=(conta*2); // vettore di soli elementi escluso l'elemento centrale del file binario vett=malloc(sizeof(int)*conta); i=0; for(;i<conta/2;i++) fread(&vett[i],sizeof(int),1,fp); fseek(fp,sizeof(int),1); //salto i 4 byte dell'elemento centrale for(;i<conta;i++) fread(&vett[i],sizeof(int),1,fp); //allocazione dinamica matrice fclose(fp); *mat=(int **)malloc((*N)*sizeof(int*)); for(i=0;i<*N;i++) (*mat)[i]=(int *)malloc(sizeof(int)*(*N)); /*inserimento in matrice*/ for(i=0; i<*N; i++){ for(j=0; j<*N; j++){ (*mat)[i][j]=0; } } for(i=0;i<*N && z<conta;i++){ for(j=0;j<*N && z<conta;j++){ (*mat)[i][j]=vett[z]; z++; } } } void stampa(int N, int** mat) { int i,j; printf("\n\n"); for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("%d\t", mat[i][j]); } printf("\n\n"); } }
aaa