/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

problema con ficheros

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
rober80



Registrado: 26 Nov 2007
Mensajes: 2

MensajePublicado: 26/11/2007 1:59 am
Título: problema con ficheros

Hola a todos:

tengo que realizar un programa al que en la llamada le paso, el nombre de 2 ficheros de texto.
ej: c:> programa entrada.txt salida.txt

El problema es que no se como hacer que esos nombres correspondan con los nombres de los ficheros.
Os pongo como lo tengo:

#include <stdio.h>
FILE *f;
FILE *fout;
void main( int argc, char *argv[]) {
f=fopen(argv[1],"r");//este seria el fichero entrada.txt
fout=fopen(argv[2],"w");// este seria el fichero salida.txt

Pero esto me da un error, como lo deberia poner?
Luego tengo otra duda sobre escribir en un fichero el salto de linea;
seria fputc(/n,fout) o seria fputc("/n",fout)

Muchas gracias
Volver arriba
mamntc02



Registrado: 30 Abr 2007
Mensajes: 277

MensajePublicado: 26/11/2007 8:40 am
Título:

Puedes indicar q error da? Puede q no exista el fichero de lectura, q no pueda crear el de escritura, q el path sea incorrecto, etc... Procura ser un poco más explícito.

Saludos.
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 377
Ubicación: Cono Sur

MensajePublicado: 26/11/2007 9:00 am
Título:

El error puede ser por varios motivos, uno de ellos se debe a que no cierras el bloque principal del programa, y además éste debe retornar un valor de tipo entero.
Completando un poco el código para que por lo menos no arroje errores de compilación:

Código:

#include <stdio.h>
#include <stdlib.h>

FILE *f=NULL;
FILE *fout=NULL;

int main( int argc, const char *argv[])
{
    if(((f=fopen(argv[1], "r")) == NULL)|| ((fout=fopen(argv[2], "w")) == NULL))
    {
        puts("ERROR AL ABRIR EL FICHERO");
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}


Un saludo
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3837
Ubicación: Mexico

MensajePublicado: 26/11/2007 9:33 am
Título:

Para evitar errores en tiempo de ejecucion se debe verificar el numero de argumentos pasados mediante la linea de comandos y almacenado en argc.

Y cuando se utiliza la funcion fopen una forma usual de verificar si la apertura fue exitosa es:
Código:
FILE *entrada;

/* ... */

if ((entrada = fopen("nombre_del_archivo", "r")) == NULL){
   
   /* Manejo de error, como minimo: */
   perror("nombre_del_archivo");
   
}

/* Continuacion normal del programa */


Esto tal vez ayude a evitar el problema (o tal vez no), como ya comento mamntc02 lo mejor es esperar a que rober80 indique cual es exactamente el mensaje de error.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
rober80



Registrado: 26 Nov 2007
Mensajes: 2

MensajePublicado: 26/11/2007 10:11 am
Título:

muchas gracias a todos, no habia ningun error, era un warning diciendome que era mejor utilizar la funcion fopen_s que fopen.
Ya esta solucionado.
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com