Advertisement
AntonioVillanueva

Lectura fichero texto recuperacion de datos numericos

Aug 30th, 2019
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define NOMBRE_FICHERO "fichero.txt"
  6. //----------------------------------------------------------------------
  7. // FUNCIONES ESPECIFICAS PARA TRATAR CADA TIPO DE INFORMACION
  8. //----------------------------------------------------------------------
  9. double caudal(double valor){
  10.     //Funcion para tratar caudal       
  11.     return valor*2;//Retorno de un valor ejemplo
  12. }
  13. //----------------------------------------------------------------------
  14. double presion(double valor){
  15.     //Funcion para tratar presion  
  16.     return valor*3;//Retorno de un valor ejemplo
  17. }
  18. //----------------------------------------------------------------------
  19. double temperatura(double valor){
  20.     //Funcion para tratar temperatura  
  21.     return valor*4;//Retorno de un valor ejemplo
  22. }
  23. //----------------------------------------------------------------------
  24. double altura(double valor){
  25.     //Funcion para tratar altura
  26.     return valor*5;//Retorno de un valor ejemplo    
  27. }
  28.  
  29. //----------------------------------------------------------------------
  30. /*FUNCIONES OBTENCION DE DATOS NUMERICOS Y TEST DE INFORMACION
  31.  *Utilizo punteros de tipo char , char * para evitar copiar a cada llamada
  32.  * la informacion asi char *linea sustituye a char linea [1024]
  33.  */
  34. //----------------------------------------------------------------------
  35. double obtieneNumero(char *linea){//obtieneNumero(char linea[1024])
  36.     //Busca el caracter : devuelve numero asociado
  37.     char *num;
  38.     double n;
  39.    
  40.     num=strrchr(linea,':');//Busca : en esta linea
  41.     n=atof (++num);//Avanza : queda solo el numero
  42.     return n;//Retorna un double
  43. }
  44. //----------------------------------------------------------------------
  45. int existePalabra(char *linea ,char  *palabra ){//existePalabra(char linea [256],char  palabra [64]){
  46.     //Existe la palabra clave en esta linea ? 1 Si 0 No
  47.     //Buscamos CAUDAL PRESION TEMPERATURA ALTURA
  48.     return (int ) (strstr(linea,palabra)!=NULL ?  1:0) ;     
  49. }
  50. //----------------------------------------------------------------------
  51. // MAIN BUCLE DE LA FUNCION  
  52. //----------------------------------------------------------------------
  53. int main() {
  54.    
  55.     char linea[1024];//Buffer lectura de lineas
  56.     FILE *fich;
  57.  
  58.     fich = fopen(NOMBRE_FICHERO, "r");
  59.  
  60.     //Lectura lineas del fichero texto  
  61.     while(fgets(linea, 1024, (FILE*) fich)) {
  62.         //Parser ,Busca palabras clave para tratar la informacion ...
  63.      
  64.       if (existePalabra(linea,"CAUDAL")==1){//Existe CAUDAL en esta linea ?      
  65.           printf ("C A U D A L = %.2f\n",caudal(obtieneNumero(linea)));
  66.       }
  67.          
  68.       if (existePalabra(linea,"PRESION")==1){//Existe PRESION en esta linea ?        
  69.           printf ("P R E S I O N = %.2f\n",presion(obtieneNumero(linea)));
  70.       }
  71.      
  72.       if (existePalabra(linea,"TEMPERATURA")==1){//Existe TEMPERATURA en esta linea ?        
  73.           printf ("T E M P. = %.2f\n",temperatura(obtieneNumero(linea)));
  74.       }
  75.      
  76.       if (existePalabra(linea,"ALTURA")==1){//Existe ALTURA en esta linea ?      
  77.           printf ("A L T U R A= %.2f\n",altura(obtieneNumero(linea)));
  78.       }                  
  79.     }
  80.    
  81.     fclose(fich);//Cierre del fichero abierto
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement