A ver. Con qué funciones puedo leer y escribir en ficheros? Lo que necesito es encontrar una palabra clave dentro de un fichero y poder cambiar una pequeña cosa.
Gracias
| |||
Leer / escribir ficheros A ver. Con qué funciones puedo leer y escribir en ficheros? Lo que necesito es encontrar una palabra clave dentro de un fichero y poder cambiar una pequeña cosa. Gracias |
| |||
qué lenguaje de programación utilizas? en vb podría ser algo así
Código:
intFichero = FreeFile() intFichero2 = FreeFile() Open fichero For input As #intFichero Open fichero2 for output as #intFichero2 Line Input #intFichero, strLinea While Not EOF(intFichero) 'NuevaLinea=strLinea sin la palabra que quiero sustituir Write intFichero2, NuevaLinea Line Input #intFichero, strLinea Wend |
| |||
Cita: Totalmente cierto... Encima los "malos" de la película, los que contestamos :)
Iniciado por Instru Jejeje se nota que no leen las reglas para preguntar, por eso tardan sus respuestas, porque vienen y como? y ya, no sabes ni de que te habla pero luego se enojan de que no les ayuda uno.. Saludos |
| ||||
... pués... en C??? ![]() Sé como se abre y escribe en archivos... pero tengo duda en cómo encontrar una palabra dentro del contenido del archivo, solo se me ocurre comparar carácter por carácter (con fgetc y palabra[X]) ... creo no tendría problemas para trabajar con ello pero... ¿no hay mejor manera?? alguna función que identifique la palabra directamente???... Tengo en mente una especie de buscador... así que no quiero hacer cambios (como se planteó originalmente), solo iluminar dicha palabra al mostrar el contenido... ocuparia las funciones textcolor() y cprintf() para eso último... Saludos y gracias de antemano ![]() Edito: Mi compilador es Turbo C++ v3.0 y trabajo con Win$XP... ![]()
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |
| ||||
... pués lo intenté pero parace que no entendí el correcto uso de fscanf()... en los ejemplos que llegué a encontrar de dicha función (sigo investigando) el formato del archivo a leer es ya conocido... .... sigo leyendo... pero si me aclarasen un poco las cosas os agradecería ![]() Gracias por encaminarme... ![]()
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |
| |||
fscanf es lo mismo que scanf salvo que "scanf" el parámetro donde indicas el fichero es stdin, se tiene por comodidad para no estar escribiendo siempre lo mismo. Y para leer archivos, depende de qué tipo sean. Si lo que lees es un archivo de texto buscando palabras, pues simplemente: cargas el fichero en un buffer, haces un bucle que recorra todo el buffer caracter a caracter y llamas a strcmp pasando el puntero cada vez.
Código:
Ese bucle te dejaría con un puntero a la primera ocurrencia de la palabra en el buffer o con un NULL si no la hubiese encontrado.char * Buscar(char * string, char * substring) { for(;;string++) { if(string=='\0') return NULL; if(strcmp(string,substring)==0) return string; } } Pero eso ya está implementado perfectamente en la librería estándar en la función "strstr" mucho mejor y en ASM... |
| ||||
... pués ![]() ![]() ![]() ![]() Ahora se me ha ocurrido hacer algo así:
Código:
pero se me hace algo engorroso... y así no compara palabras como tal, por ejemplo si busco "en" igual me lo identificaria en d"en"tro, di"en"te ... etc... No creo haya problemas en hacer otro par de validaciones para que solo haga la comparación inicial (la del carácter tomado con el primero de la palabra) después de un espacio ó salto de línea... //obviamente abro el archivo con fopen() while(!feof(file)) { c= fgetc(file); i=0; if(c==busc[i] && c!='\n') { // busc es mi palabra que busco // si el primer carácter coincide con el carácter leido del archivo... coin[i]=c; // lo "almaceno" en otro arreglo de nombre coin // y en ese mismo arreglo guardo los carácteres contiguos hasta que tenga la misma extención que mi palabra buscada for(i=1; i<strlen(busc); i++) coin[i]=fgetc(file); coin[i]='\0'; if((strcmp(coin, busc))==0) cprintf("%s", busc); // comparo y si son iguales imprimo con color else printf("%s", coin); // si son diferentes imprimo lo almacenado } else printf("%c", c); // si no hubo coincidencia inicial simplemente recorriendo el archivo } ![]() ![]() ![]() ![]()
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |
| ||||
Mira, si ya sabes usar scanf fscanf es exactamente lo mismo solo que con un argumento mas. Este argumento que hasta donde yo recuerdo es el primero y es el puntero al archivo del que se va a leer. Por lo demas es facil, un ejemplo: char palabra[32]; FILE *archivo; fopen..... . . for(;;) { fscanf(archivo, "%s", palabra); if(strcmp(palabra, "palabra_a_buscar")==0) break; } Algo asi. Espero y te sirva. Saludos |
| ||||
Gracias.. me sirvió... ![]() ![]() ![]() Pués... perfecto, como un scanf. Seguiré probando... Saludos! ![]()
__________________ ٩(͡๏̯͡๏)۶ "100 años después, la revolución no es con armas, es intelectual y digital" |