Autor
|
Tema: Modificar un archivo de texto (Leído 2,410 veces)
|
erest0r
Desconectado
Mensajes: 147
|
Hola, este es mi codigo #include <stdio.h> #include <string.h> int main( int argc, char* args[] ) { FILE *ptr; fpos_t pos; char palabra_usuario[50] = {}; char palabra_archivo[50] = {}; char ch; int n = 0; bool encontrado = false; ptr = fopen("prueba.txt", "r+"); if( ptr ) { printf("Escriba lo que desea modificar: "); fgets(palabra_usuario, 50, stdin); while( !feof(ptr) || !encontrado ) { fgetpos( ptr, &pos ); do { ch = fgetc(ptr); palabra_archivo[n++] = ch; }while( ch != '\n' ); palabra_archivo[n] = '\0'; n = 0; if( strcmp(palabra_usuario, palabra_archivo) == 0 ) { printf("Su palabra: %s Palabra encontrada: %s\n\n", palabra_usuario, palabra_archivo); printf("Escriba por lo que lo quiera cambiar: "); fgets(palabra_usuario, 50, stdin); fsetpos(ptr,&pos); fprintf(ptr, "%s", palabra_usuario); encontrado = true; } } if( !encontrado ) printf("No se encontro esa palabra"); } fclose(ptr); return 0; }
El programa encuentra efectivamente la palabra del archivo de texto (Nota: el archivo de texto ya existe), pero cuando intento agregar la nueva palabra para modificarla el programa muestra un error. Gracias por la ayuda de antemano.
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
erest0r
Desconectado
Mensajes: 147
|
/
|
|
« Última modificación: 27 Febrero 2014, 23:23 pm por erest0r »
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
No das datos de cómo está estructurado el archivo, ni sobre el error. Tampoco dices si has detectado en donde está el error.
Si el archivo es pequeño, lo que hago yo es leerlo entero, y reescribirlo con la palabra cambiada.
|
|
|
En línea
|
|
|
|
erest0r
Desconectado
Mensajes: 147
|
ejemplo del archivo:
pedro jose luis
Cuando trato de buscar alguno de las palabras menos la ultima, el programa las encuentra, pero cuando ingreso la nueva palabra para cambiarla el programa se sale, y cuando introduzco la ultima palabra o la palabra no existe tambien se sale.
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
erest0r
Desconectado
Mensajes: 147
|
Bueno logre que al menos cumpla su cometido. #include <stdio.h> #include <string.h> int main( int argc, char* args[] ) { FILE *ptr; fpos_t pos; char palabra_usuario[50] = {}; char palabra_a_buscar[50] = {}; char archivo_restante[256] = {}; // Almacena la cadena de caracteres restante en caso haya encontrado la palabra deseada char ch; int n; bool encontrado = false; ptr = fopen("prueba.txt", "r+"); if( ptr ) { printf("Escriba lo que desea modificar: "); fgets(palabra_usuario, 50, stdin); while( !feof(ptr) && !encontrado ) { n = 0; fgetpos( ptr, &pos ); do { ch = fgetc(ptr); palabra_a_buscar[n++] = ch; } while( ch != '\n' && ch != EOF ); if( palabra_a_buscar[n-1] == EOF ) palabra_a_buscar[n-1] = '\n'; if( strcmp(palabra_usuario, palabra_a_buscar) == 0 ) { n = 0; do { ch = fgetc(ptr); archivo_restante[n++] = ch; } while( !feof(ptr) && ch != EOF ); archivo_restante[n-1] = '\0'; printf("Su palabra: %s \nPalabra encontrada: %s\n\n", palabra_usuario, palabra_a_buscar); printf("Escriba por lo que lo quiera cambiar: "); fgets(palabra_usuario, 50, stdin); fsetpos(ptr,&pos); fprintf(ptr, "%s%s", palabra_usuario, archivo_restante); encontrado = true; } memset(palabra_a_buscar, '\0', 50); } if( !encontrado ) printf("No se encontro esa palabra"); } fclose(ptr); return 0; }
Quizas exista una manera mas eficiente, pero al menos pude hacer que funcionara
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Modificar el contenido de una linea de un archivo de texto en c#
« 1 2 »
.NET (C#, VB.NET, ASP)
|
nico56
|
15
|
39,346
|
12 Noviembre 2013, 07:21 am
por Eleкtro
|
|
|
Modificar linea en archivo de texto
PHP
|
Riki_89D
|
4
|
4,643
|
8 Diciembre 2010, 17:11 pm
por Riki_89D
|
|
|
Ayudaaaaa no se como Modificar el contenido de una linea de un archivo de texto
Programación General
|
luiggi1990
|
0
|
2,382
|
11 Octubre 2011, 02:16 am
por luiggi1990
|
|
|
Alguien save como crear archivo php igual que el archivo de texto
Windows
|
BrokerJoker
|
6
|
7,119
|
17 Mayo 2012, 02:47 am
por #!drvy
|
|
|
Modificar archivo de texto sin conocer su ruta
Scripting
|
KISKE
|
8
|
4,470
|
20 Diciembre 2012, 15:35 pm
por KISKE
|
|