• Martes 5 de Noviembre de 2024, 17:31

Autor Tema:  Re: Alguien puede echar un ojo a este programa y ver donde t  (Leído 2699 veces)

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« en: Jueves 20 de Febrero de 2003, 10:09 »
0
Leer ficheros

Hola a tod@s, necesito ayuda, tengo este programa hecho y compilado, y segun yo me deberia abrir una archivo TXT, escribir algo en el y despues cerrarmelo, lo ke realmente me hace, es vacilarme, por ahora lo ke si me hace es preguntarme por el fichero ke kiero abrir, preguntarme ke kiero escribir, pero luego hay veces ke me pregunta el nombre del arcivo final aunke no lo cree, y otras veces ni me lo pregunta.

El programa esta realizado en el X32, no se si lo conocereis, es para realizar programas, por blokes, es mucho mas visual, creo, bueno aki dejo mii programa si alguien consigue ver el fallo y me lo dice, le estare eternamente agradecido.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

gmantil

  • Miembro MUY activo
  • ***
  • Mensajes: 121
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #1 en: Jueves 20 de Febrero de 2003, 14:33 »
0
Hola Radarman:
Encuentro varios errores en tu programa:

En la primera apertura de tu Archivo Origen, tu lo abres con "a+" y sacas un mensaje cuando se supone que el archivo no es encontrado. Si realmente lo que quieres es detectar la existencia de un archivo lo debes hacer con "r+", pues con "a+" al no encontrarlo lo crea y no te devuelve un error. Ahora, supongamos con tu apertura que no lo encuentra.... Saca un mensaje pero el programa continua pidiendo el Texto de 80 para llenar ese archivo que no lo pudo abrir. Bueno, arregla esto. Ocurre lo mismo en la apertura del segundo archivo.

Para pedir el texto que el usuario quiera dar para llenar el archivo utilizas una función:

scanf("%s",Texto1);

El problema con esta lectura es que el scanf solo lee hasta el primer espacio introducido, luego si el usuario escribe una frase, tu programa captura solo la primera palabra y deja el buffer cargado con el resto de la frase, por eso se salta cuando quieres leer el Nombre Final. Mejor utiliza:  gets(Texto1);

No entiendo para que utilizas dos archivos. Quieres copiar de un archivo en otro? La lógica que utilizas de leer una cadena por teclado y luego pretender leer sobre la misma variable desde un archivo, no tiene sentido.

Bueno, por ahora te dejo estas inquietudes... Arreglalas y si quieres sigue en el foro con tu modificación y podremos ayudarte mas.

Suerte,

gmantil

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #2 en: Jueves 20 de Febrero de 2003, 15:39 »
0
Gracias Gmantil,

ya he cambiado lo des "scanf", pero ahora no me deja escribir los 80 caracteres, tambien he probado elimimando la parte ke me pregunta por el archivo final, para ke me hiciera todo en un mismo archivo, pero tengo el mismo resultado, no me deja escribir nada, se salta automaticamente la rutina de escribir, me aparece en pantalla, pero sin ningun efecto.

Astor

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #3 en: Jueves 20 de Febrero de 2003, 18:40 »
0
La verdad no entendi que quisite hacer. Porque no explicas tu objetivo ? Copiar un archivo en otro o grabar un texto en un archivo ?

Cuando haces
   /*~T*/
   fgets(Text1, i, ArchivoOrigen);

   /*~T*/
   fputs(Text1, ArchivoOrigen);

Que pretendes hacer ? Lo que el tipo ingreso con el gets (antes usabas scanf por lo que entendi) lo estas pisando con ese fgets.

Quisa si explicas tu objetivo se pueda entender donde esta el problema.

Dragoon

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #4 en: Jueves 20 de Febrero de 2003, 18:41 »
0
Le hice algunas modificaciones haber si es lo que quieres. Suerte.

/* Programa para escribir en un archivo de texto */

#include <stdio.h>
#include <string.h>

int main()

{
   FILE *Archivo;
   char text[80],text1[80];

   printf("Escriba por favor el path y nombre del archivo: ");
   gets(text);   /*almacenamos el path en text*/

   if ((Archivo = fopen(text,"a+")) == NULL)   /*Comprobamos si se habre o si se crea*/
   {
      printf("No se pudo abrir ni crear el archivo");   /*Si da error*/
      return 0;   /*Terminamos el programa*/
   }
   printf("Escriba lo que quiera en el archivo: n (Tiene 80 caracteres de margen)n ");
   gets(text1);   /*Almacenamos el texto en text1*/
   fputs(text1, Archivo);   /*Lo guardamos en el archivo*/
   fclose(Archivo);   /*Cerramos archivo*/
   return 0;
}

Dragoon

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #5 en: Jueves 20 de Febrero de 2003, 18:49 »
0
Explicacion del programa anterior:

1-El usuario introduce el path y nombre de archivo.
2.1-Si el archivo existe escribe al final de este
2.2-Si no lo crea
3-Le pide al usuario el texto a almacenar
4-Lo guarda en el archivo
5-Lo cierra y fin

Si esto no es lo que quieres entonces explica bien lo que quieres que haga.

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #6 en: Viernes 21 de Febrero de 2003, 08:15 »
0
Muchisimas gracias Dragon, eso era exactamente lo ke keria, lo ke pasa es ke me liaba porke lo keria a la vez guardar en otro achivo. Pero el programa ke me has escrito es exactamente lo ke keria, muchisimas gracias a todos.
Ahora me keda otra duda, y es para ke cada vez me escria en una linea he intentado coloca "n", en distintos sitios pero no me lo acepta en ninguno.

Entonces mi duda es siempre va a escribir a continuacion de lo ke ya estaba escrito? o se le puede dar la orden n en algun lado, y no he acertado a ponerlo??

gmantil

  • Miembro MUY activo
  • ***
  • Mensajes: 121
    • Ver Perfil
Re: Alguien puede echar un ojo a este programa y ver donde t
« Respuesta #7 en: Viernes 21 de Febrero de 2003, 13:47 »
0
Debes colocar los n en el printf :

printf("nHola....n");

también puedes hacer

puts("n");

o también :

putchar('n');

prueba, alguno ha de trabajar.

Suerte,
gmantil

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Alguien puede echar un ojo a este programa y ver donde tengo
« Respuesta #8 en: Viernes 21 de Febrero de 2003, 14:31 »
0
Muchas gracias a todos, ya he ocnseguido ahcer lo del n, con: "fputs("n", archivo)", y muchas gracias por toda la ayuda. Por ahora no tengo mas dudas con los ficheros, pero igual vuelvo a la carga otro dia:).

Un saludo a todos y buen fin de semana.