[C con Clase] Manejo de archivos

Hubert García Gordon hubert1 en email.com
Vie Abr 8 20:07:48 CEST 2011


Si, de verdad demasiadas gracias Steven, demasiado claro. Muchas gracias!

saludos,

            Hubert Garcia Gordon
               celular: 88734752
          enviado desde HTC Topaz

-----Original Message-----
From: Steven Davidson <srd4121 en njit.edu>
Sent: Viernes, 08 de Abril de 2011 11:37 a.m.
To: Lista de correo sobre C y C++ <cconclase en listas.conclase.net>
Subject: Re: [C con Clase] Manejo de archivos

Hola Hubert,

On 4/8/2011 12:47 AM, hubert garcia wrote:
> Buenas noches, primero les agradezco las ayudas que me han brindado
> las cuales han sido muy oportunas y asertadas y han enriquecido mi
> caminar por esta senda del C++
> Nuevamente requiero de su colaboracion, me encuentro estudiando el
> Manejo de archivos donde estoy el material que se encuentra en la
> pagina, donde ya encontre la informacion para montar la tarea, sin
> embargo nos queda al final realizar un codigo que archive numeros.
>
> Encontre uno que me sirve, pero trato de descifrarlo y no lo entiendo
> muy bien, ademas lo ejecuto y se pueden guardar numero infinidades
> de veces y no sé si tiene algun error el codigo, les agradezco mucho
> si lo puede comentar para entender las partes de su funcionamiento y
> si lo pueden ejecutar para que vean lo que les digo que pasa y si lo
> puede corregir, genial!! se les agradece.
>

Bueno, Pedro te ha comentado una parte del código fuente, pero sin saber 
cuáles son los problemas que tienes o las inquietudes y dudas que 
quieres plantear, es difícil dar una explicación acertada; pero lo 
intentaré.

> Estoy trabajando en Borland c++ v.3.1
>
> #include <stdio.h>
> main()

Es recomendable indicar 'int' para el retorno de 'main()'.

> {
> char nomfich[21];
> int n;
> FILE *salida;
> printf("Nombre del fichero a crear:");
> gets(nomfich);

Sería mejor usar 'fgets()'. Incluso los propios diseñadores de C no 
recomiendan su uso.

> salida= fopen(nomfich, "ab");

Abrimos el fichero de nombre 'nomfich' en modo binario ("b") y para 
escrituras que automáticamente se agregarán al final ("a") de tal 
fichero. Si no existe tal fichero, entonces se creará uno.

> do
> {
> printf("intruduzca un número:");
> scanf("%d", &n);
> if(n)
> fwrite (&n, 2, 1, salida);

Con tal de que el usuario no haya introducido 0 (cero), escribimos tal 
número al fichero previamente abierto. El problema que veo aquí es que 
escribe explícitamente que 'int' ocupa 2 bytes. Deberías cambiar esto 
para que use el operador 'sizeof'. Esto es,

fwrite( &n, sizeof n, 1, salida );

> }while (n);

El bucle continúa mientras que el número escrito no sea 0.

> fclose(salida);

Cerramos el fichero.

> }
>

Deberías agregar la sentencia de 'return' para que retorne 0, indicando 
que el programa ha terminado con éxito.


Básicamente, este programa acepta todos los números que el usuario 
escriba, interpretando el 0 para finalizarlo.


Espero haber aclarado las dudas.

Steven


_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ





Más información sobre la lista de distribución Cconclase