SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: neolink en Martes 25 de Noviembre de 2008, 02:53

Título: guardar un archivo con nombre proporcionado.
Publicado por: neolink en Martes 25 de Noviembre de 2008, 02:53
Hola, soy un novato aprendiendo a usar archivos en C. Según tenia entendido, con la función 'fopen'  se puede guardar una cadena en un archivo con una sintaxis de la siguiente forma:      puntero=fopen( "nombre_de_archivo", "modo");

Pero yo creí, que también se podía usar una variable que tiene una cadena almacenada en sí en lugar del nombre de archivo directo, lo que quiero es preguntar al usuario ¿qué nombre desea para el archivo?
y lo que hice fue:

   printf ("Nombre del archivo para guardar su nota: ");
   scanf("%s", nombre);
   p=fopen( nombre, "w+");

Pero marca errores de compilación.
¿De qué forma puedo preguntar por el nombre de un archivo y guardarlo con ese nombre?
Título: Re: guardar un archivo con nombre proporcionado.
Publicado por: m0skit0 en Martes 25 de Noviembre de 2008, 09:22
Bienvenido al foro, neolink

Cita de: "neolink"
con la función 'fopen' se puede guardar una cadena en un archivo con una sintaxis de la siguiente forma: puntero=fopen( "nombre_de_archivo", "modo");
No, así sólo abres el fichero, no escribes nada en él.

Cita de: "neolink"
¿De qué forma puedo preguntar por el nombre de un archivo y guardarlo con ese nombre?
Tal y como has hecho está bien

Cita de: "neolink"
Pero marca errores de compilación.
¿Has incluído stdio.h? Si es así, especifica qué error te da.

¡Saludos!
Título: Re: guardar un archivo con nombre proporcionado.
Publicado por: shakka en Martes 25 de Noviembre de 2008, 23:50
Código: C
  1. #include <stdio.h>
  2.    
  3. int main()
  4. {
  5. unsigned char nombre[2048];
  6. FILE *p;
  7.  
  8. p = NULL;
  9.  
  10. /* evidentemente deberian ir mas validaciones sobre el manejo del fichero,
  11. por ejemplo comprobar permisos de escritura, etc */
  12.  
  13.     printf ("Nombre del archivo para guardar su nota: ");
  14.     scanf("%s", nombre);
  15.  
  16.   p = fopen( nombre, "w+");
  17.  
  18.   fclose(p);
  19.  
  20. return 0;
  21. }
  22.  

Como lo estas implementando?