En mi trabajo para la Universidad me pidieron que use ficheros
bueno, el problema radica en lo siguiente, quisiera saber si existe alguna
funcion predeterminadade las librerias del C++ que cuente cuantas filas o columnas posee un fichero,
y si no existiera, talvez si ustedes me podrian guiar en como hacer una fucncion
que haga eso.
Aqui le muestro una que hice pero no cumple con los requisitos que mi docente pide
Código:
Un ejemplo del archivo "personal.txt" es como va:#include "stdafx.h" #include "stdio.h" #include "conio.h" struct datos { char nombre[25]; char apellido[25]; int edad; float salario; float bono; float horastrab; float horasxtras; float totalg; }; int conteo(FILE *archivo)//Esta funcion cuenta el numero de filas pero su defecto es que se pierde tiempo y entre mayor sea la cantidad de datos, mayor sera el tiempo perdido { int cont=0, edad; float a,b,c,d; char f[30], h[30]; while ( !feof(archivo)) { fscanf(archivo, " %f",&a); fscanf(archivo, " %f",&b); fscanf(archivo, " %f",&c); fscanf(archivo, " %f",&d); fscanf(archivo, " %d",&edad); fscanf(archivo, " %s",&f); fscanf(archivo, " %s\n",&h); cont++; } return cont; } int num() { int num; printf("Ingrese la cantidad de datos nuevos a ingresar:"); scanf("%d", &num); return num; } void main() { int llenado=0,a=0; int n=0; FILE *archivo; if((archivo=fopen("personal.txt", "r"))!=NULL)//Ve si ya existe un archivo. { a=conteo(archivo); llenado=1; fclose(archivo); } if(llenado==1) { n=num(); archivo=fopen("personal.txt", "a"); datos *vec; n=n+a;//Hago esta operacion por que el programa debe revisar si existe un archivo anterior, si existe debe de podersele agregar nuevos datos vec=new datos [n]; //resultados(archivo,n) Funcion con la cual imprimo en mi programa original lo que me pidieron, ademas que en esa funcion se carga a la estructura de arriba los datos del archivo ya ademas es donde se actualiza los datos del archivo(agregando mas filas) fclose(archivo); delete vec; } }
200.000000 250.000000 2002.000000 2800.000000 18 perez guido
2.000000 10.000000 1.250000 500.000000 25 torres juan
2.000000 10.000000 1.250000 500.000000 25 soliz juan
2.000000 10.000000 1.250000 500.000000 25 torres pedro
2.000000 10.000000 1.250000 500.000000 25 torres juan
2.000000 10.000000 1.250000 500.000000 25 torres pablo
2.000000 10.000000 1.250000 500.000000 25 torres julio
2.000000 10.000000 1.250000 500.000000 25 torres judas
2.000000 10.000000 1.250000 500.000000 25 torres mateo
Como ven debo tener una funcion que me cuente las lineas para asi poder manejar mi vector con memoria dinamica y a su vez en ese vector(estructura) debo de cargar los datos del archivo.
Gracias de antemano por su ayuda