C/Visual C - contar puntos

 
Vista:

contar puntos

Publicado por Nasón (40 intervenciones) el 16/03/2004 23:57:01
Por motivos académicos suelo trabajar con ficheros ASCII que contienen puntos del terreno expresados en coordenadas numéricas del estilo:
número x y z
He programado una función que cuenta el número de puntos contenidos en un fichero que creo que funciona y me gustaría que alguien tratara de encontrarle fallos. El código es el siguiente:
int cuenta_puntos(FILE *pf, int cols)
{
int n; //contador de puntos
int control; //controla si se ha llegado al final del fichero
double almacen; //va almacenando los datos leídos
control = 1; //inicializamos con un valor distinto de EOF
n = -1; //inicializamos a -1 para que al final n sea el número buscado,
//sin tener que restar 1
while (control != EOF) //mientras control no sea la marca de fin de fichero
{
control = fscanf(pf, "%lf", &almacen);
n++; //aumentamos en uno el contador de puntos
}
n /= cols; //dividimos entre el número de columnas
return (n);
}
Como veis, la función recibe como argumentos el fichero en cuestión y el número de columnas de las que está compuesto. Creamos una variable que sirva de contador de puntos, otra que controle si hemos llegado al final del fichero y otra más que almacene datos.
La primera idea que se me ocurrió fue ir leyendo el dato de la primera columna y saltar a la siguiente, para ello escribía:
control = fscanf(pf, "%lf\n", &almacen);
con la intención de avanzar línea con el '\n' y no leer el reto de las columnas de la fila. Cuál fue mi sorpresa cuando descubrí que hacía caso omiso de '\n' y leía todos los puntos. Para hallar el número que me interesaba (los puntos, o sea
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder