Autor
|
Tema: buscar y extraer un valor en un fichero en C++ (Leído 23,974 veces)
|
huskerone
Desconectado
Mensajes: 4
|
buenas a todos , digamos que tengo un archivo asi :
NOMBRE Rolando PESO 52 ALTURA 1.56
O este otro caso
NOMBRE Rolando PESO 52 ALTURA 1.56
como me posiciono en por ejemplo PESO y saco el valor 52 para hacer operaciones con ese valor?
se como abrir y cerrar ficheros y como escribir estos datos en el, pero no se como buscar una palabra determinada y leer el valor que sige ya sea si este esta en la misma linea o en la de abajo como en este caso,
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
un bucle for asta que encuentre un numero?,eso aria yo en el peor de los casos....,ir comparando el caracter que recore el bucle,y cuando encuentre numero pues que lo vaya guardando en un array,y de alli realizar las operaciones,no se me ocurre otra cosa,quizas aiga alguna funcion que lo haga pero vamos ni idea :S
suerte amigo
|
|
|
En línea
|
|
|
|
Dark Invader
Desconectado
Mensajes: 111
Lucha hasta el final para conseguir tu objetivo.
|
Te voy a dar una pista de ccomo lo haria yo: Primero leo la primera linea con gets,y hago un strlen(palabra),si la longitud de la cadena tiene los mismos caracteres que nombre,significa que en esa linea solo esta el nombre y haria un salto de linea para leer el nombre mas abajo,si todo esta en la misma linea,se podria usar la "debilidad" de fscanf de leer hasta un espacio,leeria hasta nombre ,un espacio,y luego leeria la siguiente cadena...Esto es una idea aproximada,necesitaras usar fseek para moverte por el archivo para hacer lo que te dije... Otra manera mas larga,seria ir caracter por caracter,si el primer caracter coincido meto una condicion de que si el siguiente tambien coincide que siga en el bucle,cada caracter estará metido en una cadena,y luego comprobaria la cadena,es decir: Nombre: Si caracter leido igual a n,seguimos,sino se sale del bucle,si caracter leido igual a o seguimos dentro... Hay otra,pero es con punteros,y no se si los has dado Un saludo
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
La forma de Dark Invader me parece bastante buena ,la de recorrer caracter x caracter (que es la que use yo) no es tan "professional",pero vamos el objetivo es ese mismo. suerte
|
|
|
En línea
|
|
|
|
El_Java
|
Dark Invader explica como lo harias con punteros anda, que no se me ocurre xD
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! Da igual que los datos esten en una linea o en varias. Lo que tienes en el fichero son pares de tipo_dato/valor, por lo tanto, lees el tipo de dato en un string, y si coincide con el que buscas lees el valor asociado. Es decir tienes que leer el par tipo_dato/valor, hasta que tipo_dato sea el que buscas... Para leer los datos, investiga sobre las funciones de stdio.h (cstdio) o los operadores/funciones de iostream. http://www.cplusplus.com/¡Saludos!
|
|
« Última modificación: 31 Agosto 2011, 18:18 pm por do-while »
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Dark Invader
Desconectado
Mensajes: 111
Lucha hasta el final para conseguir tu objetivo.
|
Dark Invader explica como lo harias con punteros anda, que no se me ocurre xD
Si tengo tiempo lo hago El_Java,(bueno ya lo he intentado y estoy teniendo problemas,por bocas ) de todas maneras las otras dos formas las he dejado,la de los punteros intentare dedicarle mas tiempo,pero creo que hable mas de la cuenta al decir que se haria con punteros,en fin...Como dicen,no hay nada imposible de hacer con C Tambien podrias utilizar la siguiente funcion: http://foro.elhacker.net/programacion_cc/funcion_findstring-t337296.0.html
|
|
« Última modificación: 31 Agosto 2011, 19:47 pm por Dark Invader »
|
En línea
|
|
|
|
oPen syLar
Desconectado
Mensajes: 769
The Best of You..
|
A ver.. Solo es para un ejemplo.? O quieres hacerlo para un software que andas desarrollando.? porque no metes todos los datos en un XML.? Con esa estructra lo que haria yo Es.. un... fgets(oPen, 255, channel); //Para leer linea por linea Y luego un... strstr(oPen, "52") //Busco la cadena 52 Saludos =)
|
|
|
En línea
|
Siempre habra 2 verdades, la que quieres creer y la que no aceptaras
|
|
|
huskerone
Desconectado
Mensajes: 4
|
gracias a todos por las respuestas,
en realidad el archivo tiene esta estructura :
18.20 20.22 32.55 15.58 02.58 11.25 25.66 45.85 36.45
cada columna corresponde a un mismo tipo de dato entonces lo que tengo que hacer es recuperar esos datos, tonces por ejemplo me piden el primer dato y yo imprimo en pantalla
registro 1 registro 2 registro 3 18.20 15.58 25.66
sin embargo no se el numero de lineas en el archivo , ya que depende de cuantas se hallan metido, intente con este codigo para contar las lineas del archivo y asi poder hacer un bucle que me imprima la palabra registro 1 registro 2 y assi, pero me cuenta las lineas en 0
int main () { char c; int num=0; ifstream archivo; is.open ("fichero.txt"); while (archivo.good()) { c = archivo.get(); if (c=='\n')num++; } is.close(); }
y luego he invetigado pero no se como accedder alos datos que ocupo, ya sea la primera columna , segunda o tercera
tengo este codigo
strcat(datoscliente.identificacion, ".dat"); //aqui abre el archivo ifstream archivoreporte (datoscliente.identificacion, ios::in); if(!archivoreporte){ cerr<<"NO SE PUDO ABRIR EL ARCHIVO"<<endl; exit(1); }
cout <<" QUE DATO DESEA COMPARAR HISTORICAMENTE ?"<<endl; cout <<endl; cout <<" PESO (1)" <<endl; cout <<" TALLA (2)" <<endl; cout <<" % DE GRASA (3)" <<endl; cout <<endl; cout <<endl; cout <<" POR FAVOR , ESCOJA UNA OPCION"<<endl; cout <<" ";cin>>opcion;
switch (opcion) { case 1: for (int i=0;i<=num;i++){ cout<<"REG "<<i<<setw(5); }
NO SE QUE HACER break; case 2: break; case 3: break; default: cout <<" EL VALOR INGRESADO NO CORRESPONDE A NINGUN MENU, POR FAVOR , TRATE DE NUEVO"; cout <<" PRESIONA CUALQUIER TECLA PARA CONTINUAR\n"; getch(); system("cls"); reporte(); }//fin switch
|
|
|
En línea
|
|
|
|
LearningSpanishProgrammer
Desconectado
Mensajes: 67
|
Si se utiliza de el C++ entonces debe utilizar de la funciones no han sido evaluados, pero diebe ejecutar #include <fstream> #include <sstream> #include <iostream> #include <string>
...
std::ifstream file("filename"); if (!file) return -1;
std::string encabeziamento; if (!std::getline(encabeziamento)) return -1;
std::string linea; while (file >> linea) { double v1, v2, v3; std::istringstream parser(linea)
parser >> v1 >> v2 >> v3 }
|
|
|
En línea
|
Estoy aprendiendo español, y tu estas aprendiendo programación
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cómo extraer valor fraccionado de una variable SOLUCIONADO!
Scripting
|
<ИΘZIЭ(ŦB>
|
2
|
3,345
|
23 Agosto 2009, 23:58 pm
por <ИΘZIЭ(ŦB>
|
|
|
Array [Ir apilando valores y buscar un valor]
Java
|
Debci
|
6
|
6,288
|
12 Septiembre 2009, 11:27 am
por Debci
|
|
|
Extraer PE i pegarlo en otro fichero ¡ayuda!
« 1 2 »
Programación C/C++
|
ApOkAlizE
|
12
|
7,670
|
21 Enero 2012, 14:19 pm
por Xandrete
|
|
|
Ayuda en extraer numeros (coordenadas x,y) de un fichero .txt en C
Programación C/C++
|
RicGeo
|
2
|
5,022
|
13 Agosto 2014, 22:59 pm
por RicGeo
|
|
|
Duda con respecto al uso de bucles para extraer datos de un fichero.
Programación C/C++
|
Lagged Player
|
0
|
1,813
|
25 Agosto 2017, 00:44 am
por Lagged Player
|
|