| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
rober80
Registrado: 26 Nov 2007 Mensajes: 2
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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 | |
 |
|
|