[C con Clase] Ayuda
Davidson, Steven
srd4121 en njit.edu
Mie Mayo 25 17:34:47 CEST 2016
Hola Federico,
2016-05-25 3:23 GMT-04:00 Federico Bracamonte <fede_b389 en hotmail.com>:
> Hola alguien podria ser tan amable para exlicarme detalladamente que hace
> cada funcion? la que es vectorizar y las demas. Porque no entiendo el
> manejo de ficheros y me pasaron en estas funciones. Muchas Gracias
>
> Es de un programa para cargar productos, ver el stock, precio de venta,
> reporte de mercaderia, etc
>
Como estás teniendo problemas con las funciones que manejan archivos,
sugiero que consultes los recursos en nuestra página. Puedes dirigirte a la
referencia de la biblioteca <stdio.h>:
http://c.conclase.net/librerias/?ansilib=stdio#inicio al igual que el
curso de archivos: http://c.conclase.net/ficheros/index.php (los primeros
capítulos te vienen bien).
Voy comentando un poco el funcionamiento del código fuente que nos envías:
- La función, 'vectorizar()', sirve para procesar la cadena, 'B', separando
las subcadenas entre los caracteres, '¥', copiándolas a cada array en
'A[i]'. Por ejemplo,
B <-- "datos¥más datos¥muchos más datos¥\0"
Se procesa 'B' separando los datos en varios arrays:
A[0] <-- "datos\0"
A[1] <-- "más datos\0"
A[2] <-- "muchos más datos\0"
- La función 'Datos()' sirve para convertir cada cadena separada en
'vector' a su representación correcta en las estructuras de 'Producto';
esto es, se copian las cadenas de caracteres a cada miembro
correspondiente, se convierte 'vector[i]' a números enteros, decimales,
etc..
- En 'Datos()', se invoca 'fopen()' para abrir un fichero (o archivo) de
texto para su lectura con el nombre de "datos.txt".
- Se invoca 'fread()' erróneamente. Está escrito,
char linea[99]="";
...
fread( &linea,sizeof(linea),1,fichero )
Esto es incorrecto, porque 'linea' ya es una dirección de memoria, por lo
tanto se puede convertir a un puntero implícitamente.
La solución es pasar 'linea' directamente; esto es,
fread( linea,sizeof(linea),1,fichero )
- La función, 'fread()', sirve para leer una cantidad de bytes,
representados como 'char', desde un fichero (previamente abierto). Por
ejemplo,
fread( linea,sizeof(linea),1,fichero )
leerá hasta 99 bytes (como 'char') y los guardará en 'linea'. Por cierto,
internamente existe un cursor de lectura que se aumentará en preparación
para siguientes lecturas, invocando a 'fread()'.
- La función 'guardar()' sirve exactamente para este propósito: se guarda
los datos en 'Producto[i]' al fichero de texto, "datos.txt".
- La función, 'fwrite()', sirve para escribir una serie de bytes (como
'char') a un fichero (previamente abierto).
Espero que esto te oriente.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160525/e4d35a71/attachment.html>
Más información sobre la lista de distribución Cconclase