26/06/11 11:41
shube
Il seguente programma dovrebbe contare le righe e stampare il contenuto di "data". Invece mi viene fuori questo:
1 4 12
3 12 93
12 5 99
1 4 12
0 6386785 -1075038064
1 4 12
9 0 93
9 5 99
1 4 12
****************
CONTENUTO "data"
****************
01.04.12
03.12.93
12.05.99
01.04.12
09.09.09
*****************
PROGRAMMA
*****************
aaa
26/06/11 11:43
shube
/* LETTURA FILE DI TESTO */
#include <stdio.h>
#include <string.h>
int righe(char nf[]);
int main()
{
char nomefile[] = "data";
int r = righe(nomefile);
int data[r][3];
FILE *f;
f=fopen(nomefile,"r");
int i;
i = 0;
while(!feof(f)){
fscanf(f, "%i.%i.%i\n", &data[i][0],&data[i][1],&data[i][2]);
printf("%i %i %i\n", data[i][0],data[i][1],data[i][2]);
i++;
}
fclose(f);
return 0;
}
int righe(char nf[])
{
int linee=0;
char c;
FILE*fl;
fl=fopen(nf,"r");
fseek(fl,0,0);
if (fl!=NULL)
{
while(fscanf(fl,"%c",&c)!=EOF)
if(c=='n')
linee++;
}
fclose(fl);
return linee;
}
Ultima modifica effettuata da shube 26/06/11 11:44
aaa
26/06/11 11:58
Fai attenzione a questa riga
if(c=='n')
26/06/11 12:05
shube
Quella riga è ok. Mi è bastato cambiare le %i con %d
aaa
26/06/11 12:12
shube
Mi sono corretto così:
/* LETTURA FILE DI TESTO */
#include <stdio.h>
#include <string.h>
int righe(char nf[]);
int main()
{
char nomefile[] = "data";
int r = righe(nomefile);
int data[r][2];
FILE *f;
f=fopen(nomefile,"r");
int i;
i = 0;
while(!feof(f)){
fscanf(f, "%d.%d.%d\n", &data[i][0],&data[i][1],&data[i][2]);
printf("%d %d %d\n", data[i][0],data[i][1],data[i][2]);
i++;
}
fclose(f);
return 0;
}
int righe(char nf[])
{
int linee=0;
char c;
FILE*fl;
fl=fopen(nf,"r");
fseek(fl,0,0);
if (fl!=NULL)
{
while(fscanf(fl,"%c",&c)!=EOF)
if(c=='\n')
linee++;
}
fclose(fl);
return linee;
}
Comunque non so... prova a dirmelo no? Magari ci capisco qualcosa pure io dato che sono alle prime armi.
forse è così?
if(c=='\n')
Ultima modifica effettuata da shube 26/06/11 12:15
aaa
26/06/11 12:15
E' importante che tu capisca da solo, altrimenti non impari.
Hai controllato quanto vale
r
dopo che è stata eseguita la
int r = righe(nomefile);
?
26/06/11 12:17
shube
ok ora mi da 5 ;D grazie mille...
Ultima modifica effettuata da shube 26/06/11 12:27
aaa