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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  AYUDA con ficheros lenguaje c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA con ficheros lenguaje c  (Leído 1,507 veces)
facusg10

Desconectado Desconectado

Mensajes: 2


Ver Perfil
AYUDA con ficheros lenguaje c
« en: 27 Agosto 2018, 02:15 am »

Hola quisiera saber como hacer para que en la modificación del segundo fichero no se me repita la ultima palabra.
Acá les dejo el código. (primero antes de correr el programa hay que crear un archivo llamado Texto.txt y poner un par de palabras ). El archivo modificado se guarda en la misma carpeta donde esta el código.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>
  5.  
  6. void archivar (char texto[20]);
  7. void limpiar (void);
  8.  
  9. int main()
  10. {
  11. FILE * archivo;
  12. char palabra[20];
  13. char modifica[20];
  14. char texto[20];
  15.  
  16. limpiar();
  17. printf("Ingrese la palabra que va a cambiar en el fichero 'Texto': ");
  18. fflush(stdin);
  19. gets(palabra);
  20. printf("¿Por que palabra la va a cambiar?:  ");
  21. fflush(stdin);
  22. gets(modifica);
  23.  
  24. archivo = fopen("Texto.txt", "r+");
  25.  
  26. if (archivo == NULL){
  27.  
  28. printf("\nNO SE ENCONTRO EL ARCHIVO Texto.txt.\n\n");
  29. }
  30. else{
  31.  
  32. while (feof(archivo) == 0)
  33. {
  34. fscanf(archivo, "%s" ,&texto);
  35. if(strcmp(texto,palabra)==0)  
  36. {
  37. strcpy(texto,modifica);
  38. }
  39. archivar(texto);
  40. }
  41. fclose (archivo);
  42. }
  43. getch();
  44. }
  45.  
  46. void archivar (char texto[20])
  47. {
  48.  
  49. FILE * archivo1;
  50. archivo1 = fopen("Modificado.txt", "a");
  51. fputs(texto, archivo1);
  52. fprintf(archivo1," ");
  53. fclose(archivo1);
  54. }
  55. void limpiar (void)
  56. {
  57. FILE * archivo1;
  58. archivo1 = fopen("Modificado.txt", "w+");
  59. fclose(archivo1);
  60. }


Mod: Obligatorio el uso de etiquetas GeSHi para códigos.


« Última modificación: 16 Septiembre 2018, 01:45 am por #!drvy » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA con ficheros lenguaje c
« Respuesta #1 en: 27 Agosto 2018, 12:24 pm »

Fíjate en el while. Por otra parte hay modificaciones menores para evitar buffer overflow.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void archivar(char *texto);
  5. void limpiar(void);
  6.  
  7. int main() {
  8.    FILE *archivo;
  9.    char palabra[20];
  10.    char modifica[20];
  11.    char texto[20];
  12.  
  13.    limpiar();
  14.    printf("Ingrese la palabra que va a cambiar en el fichero 'Texto': ");
  15.    scanf("%19s", palabra);
  16.    while(getchar()!='\n');
  17.    printf("¿Por que palabra la va a cambiar?: ");
  18.    scanf("%19s", modifica);
  19.    while(getchar()!='\n');
  20.  
  21.    archivo = fopen("Texto.txt", "r+");
  22.  
  23.    if(!archivo) {
  24.        printf("\nNO SE ENCONTRO EL ARCHIVO Texto.txt.\n\n");
  25.    }
  26.    else {
  27.        fscanf(archivo, "%19s", texto);
  28.        while(!feof(archivo)) {
  29.            if(strcmp(texto, palabra)==0) {
  30.                strcpy(texto, modifica);
  31.            }
  32.            archivar(texto);
  33.            fscanf(archivo, "%19s", texto);
  34.        }
  35.        fclose(archivo);
  36.    }
  37.    printf("Pulse INTRO para salir...");
  38.    getchar();
  39. }
  40.  
  41. void archivar(char *texto) {
  42.    FILE *archivo;
  43.    archivo = fopen("Modificado.txt", "a");
  44.    fprintf(archivo, "%s ", texto);
  45.    fclose(archivo);
  46. }
  47.  
  48. void limpiar(void) {
  49.    FILE *archivo;
  50.    archivo = fopen("Modificado.txt", "w+");
  51.    fclose(archivo);
  52. }


En línea

facusg10

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: AYUDA con ficheros lenguaje c
« Respuesta #2 en: 27 Agosto 2018, 16:56 pm »

Muchas gracias me salvaste. Ahora voy a tratar de solucionar lo del buffer overflow
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA con ficheros lenguaje c
« Respuesta #3 en: 27 Agosto 2018, 17:11 pm »

Ya viene en el código. Pero falta controlar el error del archivo no abierto en las funciones auxiliares.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con ficheros PDF
Dudas Generales
coyote_cojo 4 3,234 Último mensaje 26 Febrero 2011, 06:58 am
por coyote_cojo
ayuda con ficheros
Programación C/C++
josue_tux 3 2,661 Último mensaje 3 Diciembre 2011, 01:36 am
por Deby93
ayuda con ficheros
Java
ped18 2 1,992 Último mensaje 5 Diciembre 2011, 11:26 am
por Proteus1989
Ayuda Con Ficheros .in En C
Programación C/C++
ZedGe 2 2,124 Último mensaje 28 Mayo 2012, 04:50 am
por ZedGe
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,266 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines