[C con Clase] Problema al leer datos de un documento externo al programa

Marcos Collado Martín marquitos.mcm en gmail.com
Lun Abr 16 22:43:02 CEST 2012


Muchas gracias Steven, ya he lo he conseguido :), ahora me ha surgido otra
duda, tengo que hacer una id de producto aleatoria con una letra y dos
numeros.
Ej: B12
El caso que lo he estado intentando, y bueno te dejo el codigo que creo que
se explicara mejor que yo:

http://paste2.org/p/1982279

En ese codigo lo que hago es a la letra darle un valor en ASCII, pero luego
como lo paso a caracter?

Un saludo y gracias ^^

El 16 de abril de 2012 00:16, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola Marcos,
>
>
> On 4/15/2012 5:05 PM, Marcos Collado wrote:
>
>> Creo que el título se entiende poco, a ver si me explico mejor por
>> aquí:
>>
>> Estoy intentando realizando un programa por el cual escriba datos en
>> un documento .dat y lea de ellos. El caso es que tiene una estructura
>> el documento:
>>
>> PRODUCTOS
>>
>> id producto "nombre" precio_compra precio_venta stock num_unidades
>>
>> ...
>>
>> id producto "nombre" precio_compra precio_venta stock num_unidades
>>
>> FIN PRODUCTOS
>>
>> Entonces como puedo hacer para leer los datos por ejemplo de
>> precio_compra y luego reescribirlos en esa misma zona?
>>
>>
> Necesitas más información en cuanto a la estructura o formato del fichero
> al igual que el "tipo" o modo de fichero: texto o binario. Sugiero que
> consultes nuestro curso sobre el Manejo de Ficheros en nuestra página;
> puedes ir directamente a: http://c.conclase.net/**ficheros/index.php<http://c.conclase.net/ficheros/index.php>
>
> Si se trata de un fichero binario con una longitud fija de los registros y
> por tanto de los campos, entonces no debería resultarte difícil acceder
> justamente a ese "campo" tanto para leer de ello como para modificarlo. Por
> ejemplo,
>
> [id_producto (4 bytes)] [nombre (64 bytes)] [precio_compra (4)]
> [precio_venta (4)] [stock (4)] [num_unidades (4)]
>
> Entonces el problema se convierte en una cuestión de calcular el
> desplazamiento (en bytes) desde el comienzo del fichero. De hecho, podemos
> pensar que el fichero no es más que un array y por tanto, nos interesa
> calcular el "índice" para llegar a tal byte. En el ejemplo anterior, cada
> registro es de 84 bytes. Si queremos calcular el desplazamiento para
> acceder al campo 'stock'  del tercer registro, entonces tenemos que hacer
> unos cálculos:
>
> - Nos saltamos los dos primeros registros de 84 bytes cada uno: 2 * 84 =
> 168 bytes.
> - Nos saltamos los primeros 76 bytes = 4 + 64 + 4 + 4.
> - Su suma es el desplazamiento total: 168 + 76 = 144 bytes.
>
> Al realizar un cambio de posición de 144 bytes desde el comienzo del
> fichero, nuestro cursor del fichero se ubica al comienzo de la información
> que representa la cantidad de artículos en existencia (stock). Ahora
> podemos acceder a los 4 bytes que representan la cantidad guardada.
>
> Si se trata de un fichero de texto y se guarda la información con
> diferentes longitudes, entonces no podemos acceder tan directamente.
> Asimismo, la modificación de la información puede conllevar a un cambio de
> longitud o tamaño de caracteres y por tanto estaríamos reemplazando la
> información que no queremos modificar, pero que existe consecutivamente a
> la que sí queremos modificar.
>
> La solución es,
> 1. Copiar la información posterior,
> 2. Modificar la información que nos interesa, y
> 3. Volver a copiar la información posteriormente.
>
> También podemos crear un nuevo fichero y realizar varias copias del
> fichero original; esto es,
>
> 1. Copiar del fichero original al nuevo toda la información hasta llegar a
> la información a modificar,
> 2. Copiar la nueva información que nos interesa al nuevo fichero, y
> 3. Copiar del fichero original al nuevo toda la información posterior a la
> modificación.
>
>
> Espero que todo esto te oriente.
>
> Steven
>
>
> ______________________________**_________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/**mailman/listinfo/cconclase_**
> listas.conclase.net<http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net>
> Bajas: http://listas.conclase.net/**index.php?gid=2&mnu=FAQ<http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120416/e9e95f88/attachment.html>


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