Programación General > C/C++

 Re: Alguien puede echar un ojo a este programa y ver donde t

(1/2) > >>

radarman:
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.

gmantil:
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:
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:
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:
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;
}

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa