PDA

View Full Version : lettura file testo e inserimento in matrice [c]


*MATRIX*
20-01-2006, 19:15
ciao raga ho un problema

ho un file di testo scritto in questa maniera

1 2
3 4
5 6
7 8
9

devo memeorizzarlo in una matrice 5x2 (insomma nella stessa forma che vete nel file di testo)


#include <stdio.h>
#include <stdlib.h>

int matrice[50][50];

main()
{
int num,n,m,i,j;
char car;
FILE *dati;
dati=fopen("dati.txt","r");
fscanf(dati,"%d",&n);
fscanf(dati,"%[^ \n]");//legge spazi vuoti
fscanf(dati,"%d",&m);
for(i=0;i<n;i++)
for (j=0;j<m;j++)
matrice[i][j]=-1;

for (i=0;i<=n;i++)
{

do
{
if (fscanf(dati,"%[^ \n]%c",&num,&car)==0)
{

fscanf(dati,"\n%c",&car);

}
else
{
matrice[i][j]=num;
printf("%c\n",car);
}
}
while (ch!='\n');
}
for(i=0;i<n;i++)
for (j=0;j<m;j++)
printf("%d",matrice[i][j]);
fclose(dati);
printf("\n");
system("pause");
}


non riseco a capire dove sta l'errore io lo vorrei far visualizzare a video ma non ci riesco mi da valori sballati mi date un mano?

*MATRIX*
21-01-2006, 09:09
vi prego datemi una mano :cry:

Ziosilvio
21-01-2006, 09:58
Secondo me ti fai troppi problemi sulla lettura di spazi vuoti.

Voglio dire: una chiamata del tipo fscanf(dati,"%d",&n) automaticamente passa oltre tutti i caratteri di spaziatura che stanno prima di quelli alfanumerici.
Per cui, ad esempio, se devi leggere due interi da una stessa riga, basta che chiami fscanf(dati,"%d%d",&n,&m).

Prova a riscrivere le routine di input secondo questa filosofia, e dicci cosa esce fuori.