elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como comparar un string con una palabra dentro de un documeto de texto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como comparar un string con una palabra dentro de un documeto de texto  (Leído 3,223 veces)
lordluisiv

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Como comparar un string con una palabra dentro de un documeto de texto
« en: 3 Abril 2019, 03:19 am »

Buenas espero que todos esten bien.
bueno creo que ya el titulo explica todo, aqui estan las librerias que uso y la el string que quiero comparar...
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *doc;
char DATA_B[3][12];

int main(){

strcpy(DATA_B[0],"Var1");
strcpy(DATA_B[1],"Var2");
strcpy(DATA_B[2],"Var3");
............
..................
............................


aqui es donde leo los e imprimo los datos del documento de texto, no logro que compare el string con la palabra que esta escrita en el documento. ejm:

doc.txt{
Var1= 12
Var2= 13
Var3= 99
}

y en el programa solo imprimir el 12, 13, 99

pero no lo logro hacer, si me pudieran ayudar pls
Código:
{
doc = fopen("registro.txt","r");
char read;
char palabra;
if(doc == NULL)
{
printf("ERROR EN EL ARCHIVO");
return 1;
}               

printf("\n\n\t--------Datos Cargados--------\n");
while((read = getc(doc)) != EOF)
{
palabra += read;
if(read == '\n'|| strcmp(palabra, DATA_B[0]) == 0  && read == '=')
{
printf("\n");
}else{
printf("%c",read);
}

}
fclose(doc);
return 1;
}


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Como comparar un string con una palabra dentro de un documeto de texto
« Respuesta #1 en: 3 Abril 2019, 10:23 am »

No entiendo muy bien lo que pretendes hacer, ni lo que haces, ya que lo que estás guardando es {"Var1" / "Var2" / "Var3"} pero en ningún momento estás guardando los números con el "=".
Además <palabra> es un <char> cuando creo que lo que querías es que fuera un array de <char>.

Y creo que esto no se cumple nunca:
Código
  1. palabra += read;
  2. strcmp(palabra, DATA_B[0]) == 0  && read == '='
Porque cuando <palabra> es igual a <DATA_B[0]> ("Var1") en <read> todavía tienes almacenado el "1".
Cuando en <read> tienes almacenado el "=", en <palabra> ya tendrías "Var1=" (asumiendo que corrijas lo de que <palabra> es un array). 


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
lordluisiv

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Como comparar un string con una palabra dentro de un documeto de texto
« Respuesta #2 en: 4 Abril 2019, 03:06 am »

No entiendo muy bien lo que pretendes hacer, ni lo que haces, ya que lo que estás guardando es {"Var1" / "Var2" / "Var3"} pero en ningún momento estás guardando los números con el "=".
Además <palabra> es un <char> cuando creo que lo que querías es que fuera un array de <char>.

Y creo que esto no se cumple nunca:
Código
  1. palabra += read;
  2. strcmp(palabra, DATA_B[0]) == 0  && read == '='
Porque cuando <palabra> es igual a <DATA_B[0]> ("Var1") en <read> todavía tienes almacenado el "1".
Cuando en <read> tienes almacenado el "=", en <palabra> ya tendrías "Var1=" (asumiendo que corrijas lo de que <palabra> es un array). 

lo que trato de hacer es guardar los caracteres de la palabra "Var1" pero no se como hacerlo, lo que trato de hacer es esto.
https://foro.elhacker.net/programacion_cc/cguardar_y_cargar_datos_de_un_fichero_txt-t494053.0.html

No sé qué parte es la que quieres que te explique pero imagino que es la solución a tu pregunta. Tienes un fichero de texto que guarda:
Código:
string (VARIABLE) + char (A/B/C) + char (=) + int (numero)
Lo que tú haces es guardar caracter a caracter en <c> e ir mostrándolos. En lugar de eso crea una variable de tipo <string>, otras dos de tipo <char> y otra de tipo <int>. Entonces guardas en la de tipo <string> la palabra "VARIABLE", en la primera de tipo <char> la letra y en la segunda el "=" y en la de tipo <int> el número. Entonces puedes mostrar sólo la de tipo <int> para mostrar el número o hacer un condicional que si la variable que guarda la letra es igual a {A, B, C} muestre el valor de la de tipo <int> y sino no.
Una vez tienes toda la información del fichero en variables puedes hacer lo que quieras con ello. Las variables las puedes sobreescribir para ahorrar en memoria ya que siempre vas a guardar "VARIABLE" e "=". Si quieres almacenar cada letra con su número correspondiente de forma más "permanente" (que puedas usarlas luego en el programa) entonces ya podrías hacerlo con un array de <char> y otro de <int> o usando clases o estructuras. Pero para lo que quieres hacer no es necesario.

jeje aun sigo intentando pero no lo logro

En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Como comparar un string con una palabra dentro de un documeto de texto
« Respuesta #3 en: 4 Abril 2019, 04:12 am »

Vale. Todo depende de cómo estés guardando esos datos. Tienes varias opciones como pueden ser:
  • Pedir al usuario la cadena entera (no te lo recomiendo... el usuario siempre tiende a equivocarse y tenemos que vigilar todo lo que hace  :xD)
  • Pedir al usuario el numero y el resto de la cadena lo creamos nosotros
  • No pedir nada al usuario y establecer unos valores fijos en tiempo de compilacion
  • Estan los datos en el fichero y tenemos que cogerlos de ahi

Según la opción que quieras implementar, tenemos que seguir unas restricciones u otras.
Si no es la opción 4, yo te recomendaría la segunda opción, te evitas los problemas de la primera y no pierdes tanta funcionalidad como en la tercera (estoy suponiendo que nosotros conocemos los nombres de las variables de antemano, es decir, que van a ser "var1", "var2", etc) Si lo que quieres es que el usuario introduzca el nombre que el quiera para la variable, entonces hay que implementar la primera opción.

Coméntame cuál se adapta mejor a lo que quieres/necesitas e intentaré echarte una mano desde lo más básico para corregir el problema de raíz. :-X
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
lordluisiv

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Como comparar un string con una palabra dentro de un documeto de texto
« Respuesta #4 en: 4 Abril 2019, 20:50 pm »

Vale. Todo depende de cómo estés guardando esos datos. Tienes varias opciones como pueden ser:
  • Pedir al usuario la cadena entera (no te lo recomiendo... el usuario siempre tiende a equivocarse y tenemos que vigilar todo lo que hace  :xD)
  • Pedir al usuario el numero y el resto de la cadena lo creamos nosotros
  • No pedir nada al usuario y establecer unos valores fijos en tiempo de compilacion
  • Estan los datos en el fichero y tenemos que cogerlos de ahi

Según la opción que quieras implementar, tenemos que seguir unas restricciones u otras.
Si no es la opción 4, yo te recomendaría la segunda opción, te evitas los problemas de la primera y no pierdes tanta funcionalidad como en la tercera (estoy suponiendo que nosotros conocemos los nombres de las variables de antemano, es decir, que van a ser "var1", "var2", etc) Si lo que quieres es que el usuario introduzca el nombre que el quiera para la variable, entonces hay que implementar la primera opción.

Coméntame cuál se adapta mejor a lo que quieres/necesitas e intentaré echarte una mano desde lo más básico para corregir el problema de raíz. :-X

quiero algo parecido a la 4ta opcion, lo que quiero hacer es como un sistema de guardado, que busque el nombre de X variable y cargue su contenido
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Como comparar un string con una palabra dentro de un documeto de texto
« Respuesta #5 en: 4 Abril 2019, 22:00 pm »

Entonces no tiene ningún sentido que guardes los datos en la matriz usando <strcpy()> como has hecho.
Lo que tienes que hacer es: de un fichero que ya tiene las variables guardadas con su valor y todo, meterlas en una matriz. Te dejo un ejemplo mejor que ir caracter a caracter...
Código
  1. #define MAX_SIZE 20
  2.  
  3. int main(){
  4.    FILE *fichero;
  5.    fichero = fopen("fichero.txt", "r");
  6.    char registro[MAX_SIZE][MAX_SIZE];
  7.    int num_variables = 0; // numero de variables/lineas del fichero
  8.    while(!feof(fichero))
  9.        fgets(registro[num_variables++], MAX_SIZE, fichero);
  10.    num_variables--;
  11. }

Luego tienes que pedir una palabra/variable y buscar en la matriz si está y si está devolver el valor que está a la derecha del "=". Mírate las funciones de la librería <string.h> ya que son de utilidad para este ejercicio.
PD: Te recomiendo pedir la palabra usando la función <fgets()> (tendrás que hacer una pequeña modificación para quitar el ENTER que le des al terminar de escribir la palabra).

Vete probando lo que te comento y cuando te quedes bloqueado, intento ayudarte más específicamente ya que ahora estoy ocupado. Suerte :-X
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
lordluisiv

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Como comparar un string con una palabra dentro de un documeto de texto
« Respuesta #6 en: 5 Abril 2019, 11:53 am »

Entonces no tiene ningún sentido que guardes los datos en la matriz usando <strcpy()> como has hecho.
Lo que tienes que hacer es: de un fichero que ya tiene las variables guardadas con su valor y todo, meterlas en una matriz. Te dejo un ejemplo mejor que ir caracter a caracter...
Código
  1. #define MAX_SIZE 20
  2.  
  3. int main(){
  4.    FILE *fichero;
  5.    fichero = fopen("fichero.txt", "r");
  6.    char registro[MAX_SIZE][MAX_SIZE];
  7.    int num_variables = 0; // numero de variables/lineas del fichero
  8.    while(!feof(fichero))
  9.        fgets(registro[num_variables++], MAX_SIZE, fichero);
  10.    num_variables--;
  11. }

Luego tienes que pedir una palabra/variable y buscar en la matriz si está y si está devolver el valor que está a la derecha del "=". Mírate las funciones de la librería <string.h> ya que son de utilidad para este ejercicio.
PD: Te recomiendo pedir la palabra usando la función <fgets()> (tendrás que hacer una pequeña modificación para quitar el ENTER que le des al terminar de escribir la palabra).

Vete probando lo que te comento y cuando te quedes bloqueado, intento ayudarte más específicamente ya que ahora estoy ocupado. Suerte :-X

Ok muchas gracias, tratare hacerlo así
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Encontrar palabra dentro de un texto...
Programación Visual Basic
Edu 5 2,742 Último mensaje 11 Septiembre 2010, 17:57 pm
por Edu
Buscar caracter dentro de un string y evitar recorte de palabra
Programación Visual Basic
fx700 0 2,667 Último mensaje 28 Octubre 2011, 23:39 pm
por fx700
Buscar una palabra dentro de un string
Programación C/C++
kur79 3 16,234 Último mensaje 18 Febrero 2019, 19:48 pm
por Loretz
Buscar una palabra dentro de un string (PHP / Buscador)
Desarrollo Web
Leguim 2 1,984 Último mensaje 17 Febrero 2019, 14:52 pm
por Leguim
[Android] Como puedo obtener el item en un string para comparar en el if?
Java
@XSStringManolo 2 3,163 Último mensaje 9 Noviembre 2019, 17:17 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines