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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Modificar un archivo de texto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Modificar un archivo de texto  (Leído 2,410 veces)
erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Modificar un archivo de texto
« en: 27 Febrero 2014, 22:38 pm »

Hola, este es mi codigo

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main( int argc, char* args[] )
  5. {
  6.    FILE *ptr;
  7.    fpos_t pos;
  8.    char palabra_usuario[50] = {};
  9.    char palabra_archivo[50] = {};
  10.    char ch;
  11.    int n = 0;
  12.    bool encontrado = false;
  13.  
  14.    ptr = fopen("prueba.txt", "r+");
  15.  
  16.    if( ptr )
  17.    {
  18.        printf("Escriba lo que desea modificar: ");
  19.        fgets(palabra_usuario, 50, stdin);
  20.  
  21.        while( !feof(ptr) || !encontrado )
  22.        {
  23.            fgetpos( ptr, &pos );
  24.  
  25.            do
  26.            {
  27.                ch = fgetc(ptr);
  28.                palabra_archivo[n++] = ch;
  29.            }while( ch != '\n' );
  30.  
  31.            palabra_archivo[n] = '\0';
  32.            n = 0;
  33.  
  34.            if( strcmp(palabra_usuario, palabra_archivo) == 0 )
  35.            {
  36.                printf("Su palabra: %s Palabra encontrada: %s\n\n", palabra_usuario, palabra_archivo);
  37.                printf("Escriba por lo que lo quiera cambiar: ");
  38.                fgets(palabra_usuario, 50, stdin);
  39.                fsetpos(ptr,&pos);
  40.                fprintf(ptr, "%s", palabra_usuario);
  41.                encontrado = true;
  42.            }
  43.        }
  44.  
  45.        if( !encontrado )
  46.            printf("No se encontro esa palabra");
  47.    }
  48.  
  49.    fclose(ptr);
  50.  
  51.    return 0;
  52. }
  53.  
  54.  

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 Desconectado

Mensajes: 147



Ver Perfil
Re: Modificar un archivo de texto
« Respuesta #1 en: 27 Febrero 2014, 23:21 pm »

/


« Ú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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Modificar un archivo de texto
« Respuesta #2 en: 27 Febrero 2014, 23:38 pm »

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 Desconectado

Mensajes: 147



Ver Perfil
Re: Modificar un archivo de texto
« Respuesta #3 en: 27 Febrero 2014, 23:45 pm »

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 Desconectado

Mensajes: 147



Ver Perfil
Re: Modificar un archivo de texto
« Respuesta #4 en: 28 Febrero 2014, 17:29 pm »

Bueno logre que al menos cumpla su cometido.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main( int argc, char* args[] )
  5. {
  6.    FILE *ptr;
  7.    fpos_t pos;
  8.    char palabra_usuario[50] = {};
  9.    char palabra_a_buscar[50] = {};
  10.    char archivo_restante[256] = {};    // Almacena la cadena de caracteres restante en caso haya encontrado la palabra deseada
  11.    char ch;
  12.    int n;
  13.    bool encontrado = false;
  14.  
  15.    ptr = fopen("prueba.txt", "r+");
  16.  
  17.    if( ptr )
  18.    {
  19.        printf("Escriba lo que desea modificar: ");
  20.        fgets(palabra_usuario, 50, stdin);
  21.  
  22.        while( !feof(ptr) && !encontrado )
  23.        {
  24.            n = 0;
  25.            fgetpos( ptr, &pos );
  26.  
  27.            do
  28.            {
  29.                ch = fgetc(ptr);
  30.                palabra_a_buscar[n++] = ch;
  31.  
  32.            } while( ch != '\n' && ch != EOF );
  33.  
  34.            if( palabra_a_buscar[n-1] == EOF )
  35.                palabra_a_buscar[n-1] = '\n';
  36.  
  37.            if( strcmp(palabra_usuario, palabra_a_buscar) == 0 )
  38.            {
  39.                n = 0;
  40.                do
  41.                {
  42.                    ch = fgetc(ptr);
  43.                    archivo_restante[n++] = ch;
  44.                } while( !feof(ptr) && ch != EOF );
  45.                archivo_restante[n-1] = '\0';
  46.  
  47.                printf("Su palabra: %s \nPalabra encontrada: %s\n\n", palabra_usuario, palabra_a_buscar);
  48.                printf("Escriba por lo que lo quiera cambiar: ");
  49.                fgets(palabra_usuario, 50, stdin);
  50.                fsetpos(ptr,&pos);
  51.                fprintf(ptr, "%s%s", palabra_usuario, archivo_restante);
  52.                encontrado = true;
  53.            }
  54.            memset(palabra_a_buscar, '\0', 50);
  55.        }
  56.  
  57.        if( !encontrado )
  58.            printf("No se encontro esa palabra");
  59.    }
  60.  
  61.    fclose(ptr);
  62.  
  63.    return 0;
  64. }
  65.  

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 12 Noviembre 2013, 07:21 am
por Eleкtro
Modificar linea en archivo de texto
PHP
Riki_89D 4 4,643 Último mensaje 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 Último mensaje 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 Último mensaje 17 Mayo 2012, 02:47 am
por #!drvy
Modificar archivo de texto sin conocer su ruta
Scripting
KISKE 8 4,470 Último mensaje 20 Diciembre 2012, 15:35 pm
por KISKE
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines