Salve a tutti ragazzi, sto provando a svolgere un semplice esercizio, in cui devo acquisire una matrice 10X10 da un file di testo e poi stamparla a schermo.
Il file di testo è composto dai valori della matrice e dalla sua dimensione (elencata per ultima)
Il programma,dopo aver letto i valori da file, li memorizza in un vettore e poi effettua il passaggio da vettore a matrice.
Sto avendo alcuni problemi per quanto riguarda l'output prodotto dal programma, potreste indicarmi il perchè?![]()
Questo è il codice del programma:
mentre il file matrice.txt è semplicemente questo qui:codice:#include <stdio.h> int dimensione(FILE*); void acquisisci_matrice(FILE*,int, unsigned char(*)[10]); void visualizza_matrice(unsigned char(*)[10], int); void main() { FILE *fp; int dim=0; unsigned char A[10][10]; fp=fopen("matrice2.txt", "r"); if(fp==NULL) printf("File non esistente\n"); else { dim=dimensione(fp); fclose(fp); if(dim==0) printf("File vuoto!"); else { fp=fopen("matrice.txt", "r"); printf("La dimensione e' %d ",dim); acquisisci_matrice(fp,dim,A); visualizza_matrice(A,dim); fclose(fp); } } } void acquisisci_matrice(FILE *fp, int DIM, unsigned char(*matrice)[10]) { unsigned char vett[101]; unsigned char V; int i=0; printf("Acquisizione\n"); while(fscanf(fp,"%s", &V)!=EOF) { vett[i]=V; i++; for(i=0;i<DIM;i++) printf("%c",vett[i]); } i=0; printf("Passaggio da vettore a matrice\n"); for(int j=0;j<DIM;j++) { for(int k=0;k<DIM; k++) { matrice[j][k]=vett[i]; i++; }; }; } int dimensione(FILE *fp) { int DIM=0, V; while(fscanf (fp, "%d", &V)!=EOF) DIM=V; return DIM;
l'output che mi dà è il seguente:codice:1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 10
Non capisco perchè visualizza i numeri in questo modo, e non capisco cosa sbaglio. Sicuramente ho disposto male i dati nel file, ma come dovrei disporli? Grazie in anticipo per l'aiuto e la pazienzacodice:La dimensione e' 10 Acquisizione 16789012341678901234Passaggio da vettore a matrice 16789012341678901234567890123456789012345678901234567890123456789012345678901234 5678901234567890 ÌÌÌPress any key to continue![]()

Rispondi quotando
