Oppure

Loading
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:09
Quella riga NON è ok ...
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. :pat:

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