Estoy haciendo algunas cosillas con ficheros y me han saltado algunas dudillas. Resulta que quiero saber si el fichero tiene cierta cadena en cualquier parte de este ¿como lo hago? Por cierto para obtener los caracteres del fichero uso fgets para guardarlo luego en un array ¿es esta la forma mas eficaz?. Otra cosilla, resulta que estoy de pruebas y quiero ver si el fichero es igual a una string. Asi que hago el fgets y luego lo comparo con la string, pero resulta que aun siendo iguales el programa no los ve igual :( ¿acaso ai algo que yo no pueda ver?
Gracias por adelantado (ole) .
Podrias poner el código en
el que comparas los ficheros
para ver que estas haciendo mal?
Y para buscar una cadena en un fichero,
create una función que lea el fichero completo
en un array de strings y luego
busca esa cadena en los strings
haber si lo encuentra o no.
Pseudo codigo ON
Array Strings = contenido_fichero()
booleando encontrado=falso
entero frase=0
entero frases=tamaño array strings
mientras encontrado=falso y frase<=frases
if (buscar cadena en String(frase))
encontrado=verdadero
else
frase++
devolver encontrado
Pseudo codigo OFF
"Resulta que quiero saber si el fichero tiene cierta cadena en cualquier parte de este ¿como lo hago?"
grep -i "texto" fichero
"Otra cosilla, resulta que estoy de pruebas y quiero ver si el fichero es igual a una string. Asi que hago el fgets y luego lo comparo con la string, pero resulta que aun siendo iguales el programa no los ve igual"
Pues depende de cómo lo hagas, si comparas string contra string (con strcmp(string1,string2)) asegúrate de que lo que vayas a comparar y la cadena de destino tienen ambas el \0 al final (o no la tiene ninguna).
De momento no se me ocurre nada más.
Cita de: "Mars Attacks"grep -i "texto" fichero
Creo que no me has entendido bien (ole) . Vereis, resulta que estoy haciendo un lenguajillo de scripting (o al menos intentadolo) y lo que quiero es eso, leer cada cadena y que devuelva 1 o 0 en funcion de si ha encontrado o no la cadena. Pero creo que la voy a tener que hacer yo , porque me da que no hay funciones de ese tipo (nooo) .
en C puedes usar strstr que busca una subcadena en una cadena y retorna un puntero al comienzo
En c++ con std::string tienes find. Para mas info:
http://www.sgi.com/tech/stl/basic_string.htmlsaludos
Habrá que probarlo. Gracias a todos (uoh) .