elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en manejo de Archivos en Lenguaje C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en manejo de Archivos en Lenguaje C  (Leído 3,852 veces)
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Ayuda en manejo de Archivos en Lenguaje C
« en: 8 Diciembre 2011, 01:58 am »

Tengo unas cuántas dudas en cuanto a la apertura y cerradura de archivos. Bueno Comienzo. Primero planteo el siguiente código:

Código:
# include <stdio.h>
# include <iostream.h>

int main()
{
   FILE * arch;

   arch = fopen("Luis.txt","r");     // intentando abrir

   if(arch == NULL)
   {
      cout<<"El archivo no existe";
   }
   else
   {
      cout<<"El archivo si existe";
   }
   getchar();
   return 0;
}


Bueno, en este primero código estoy tratando de abrir un archivo. Para eso hago uso de la función fopen(...). Cuando no existe el archivo devolverá NULL y me mostrará el mensaje correspondiente. Pero que sucede si el archivo existiera. Qué valor devuelve la función fopen ¿?. Ya sé que me mostrará el mensaje "El archivo si existe" pero mi primera duda sería que si no devuelve NULL entonces ¿qué devuelve?

Sigo entonces. Con este siguiente código. Hago uso de la función fopen para abrir el archivo en el modo lectura. Si no existe entonces me pregunta si deseo crearlo, para eso hago uso de fopen en el modo "w". La teoría dice que si el archivo no existe, entonces la función lo crea. Muy bien hasta aquí. Pero, la función ¿Solo lo crea pero no lo abre o a parte de crearlo también lo abre?. Porque si solo lo crea pero no lo abre, entonces no tendría que usar fclose. Pero en caso contrario, sería necesario que lo cierre con fclose.

Código:
# include <stdio.h>
# include <iostream.h>

int main()
{
   FILE * arch;
   char resp;

   arch = fopen("Luis.txt","r");     // intentando abrir

   if(arch == NULL)
   {
      cout<<"El archivo no existe\n\n\n";
      do{

         cout<<"Desea crear el archivo???";
         cin>>resp;
      }while(!(resp=='S' || resp=='N'));

      if(resp=='S')
      {
         arch = fopen("Luis.txt","w");
         fclose(arch);
      }
   }
   else
   {
      cout<<"El archivo si existe";
   }

   getchar();
   return 0;
}


Muchas gracias.


« Última modificación: 8 Diciembre 2011, 02:00 am por theluigy13etv » En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Ayuda en manejo de Archivos en Lenguaje C
« Respuesta #1 en: 8 Diciembre 2011, 02:55 am »

Bueno primero que nada cuando abras un archivo ciérralo haciendo uso de fclose().

1. Cuando fopen no retorna NULL retorna un puntero a una estructura FILE que no es mas que un nombre que se le da a la estructura _IO_FILE no estoy seguro de como funciona pero ya tienes una idea de que buscar.

2. Lo que hace fopen es abrir un archivo como su nombre lo dice, pero cunado lo haces en modo w si el archivo no existe no te devolverá NULL sino que lo va a crear y te devolverá un puntero a FILE.


« Última modificación: 8 Diciembre 2011, 02:59 am por naderST » En línea

theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
Re: Ayuda en manejo de Archivos en Lenguaje C
« Respuesta #2 en: 8 Diciembre 2011, 19:07 pm »

Ayaaaaaaaa  ::) , osea que si el archivo no existe, al abrirlo con fopen en el modo W, lo crea y me devuelve el puntero a FILE, osea que se podría decir que el ¿archivo está creado y a la vez abierto?...osea que antes de finalizar el programa, aunque no escriba nada en el, ¿tengo que cerrarlo? con fclose.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda en manejo de Archivos en Lenguaje C
« Respuesta #3 en: 9 Diciembre 2011, 01:28 am »

Si, con sus detalles.

Cuando un programa termina sin que se genere un error (una terminación normal) los buferes se vacían y se cierran los streams (entre otras cosas). Pero, de nuevo, se consideran "buenas practicas" cerrar los archivos antes de finalizar la aplicación.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para el manejo de archivos[Solucuionado]
.NET (C#, VB.NET, ASP)
Sk9ITk5Z 3 3,683 Último mensaje 31 Enero 2012, 17:27 pm
por Sk9ITk5Z
ayuda con manejo de archivos en c
Programación C/C++
tamyta_19 4 2,970 Último mensaje 24 Abril 2015, 17:03 pm
por tamyta_19
Ayuda con MANEJO DE ARCHIVOS
Programación C/C++
felixgz 1 1,983 Último mensaje 2 Marzo 2016, 23:36 pm
por carolabeatle
Ayuda con Manejo de archivos!
Programación C/C++
pedro0620 1 2,452 Último mensaje 9 Septiembre 2016, 16:02 pm
por AlbertoBSD
ayuda con manejo de archivos en vb.net 2008 « 1 2 »
.NET (C#, VB.NET, ASP)
**Aincrad** 12 8,968 Último mensaje 23 Septiembre 2017, 13:08 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines