Título: Struct y apuntadores Publicado por: Cas980 en 3 Abril 2014, 04:39 am Saludos a toda la comunidad, tengo el siguiente programa que maneja una estructura y apartir de un numero n dado por el usuario reserva memoria para guardar todos los registros.
Tengo varias dudas al usar los apuntadores y la forma de acceder a las variables del struct. La forma en que lo estoy haciendo es correcta? :huh: :huh: No tengo muy claro la diferencia entre estas dos formas. Código
Código
Código
Título: Re: Struct y apuntadores Publicado por: rir3760 en 3 Abril 2014, 05:22 am Si no tienes un curso o libro de calidad sobre C te recomiendo conseguir uno, recomendaciones sobre ellos las puedes encontrar mediante el motor de búsqueda de los foros.
Tengo varias dudas al usar los apuntadores y la forma de acceder a las variables del struct. La forma en que lo estoy haciendo es correcta? No. Debes primero utilizar el operador "[ ]" para acceder a un elemento del bloque y a continuación el operador "." para acceder al campo indicado. Por ejemplo el primer bucle se debe cambiar a:Código
No tengo muy claro la diferencia entre estas dos formas. La primera se utiliza si "reg" es un puntero, la segunda cuando no lo es.Código
En cuanto al programa tiene varios errores, algunos de ellos: * Te falta el punto y coma después de la declaración de "struct libros" y el numero de paginas no debe ser un array. Hay que cambiar la declaración a: Código
* Te falta el operador "dirección de" (el '&') en la primera llamada a scanf: Código * La función "cast" solo "pasa la cubeta" (llama a otra función), para el caso eliminala y llama a malloc directamente. Y no es necesario convertir el resultado de malloc al tipo apropiado. * La función main se debe definir como "int main(void) ..." o "int main() ..." y su valor de retorno debe indicarse con al menos "return 0;". También hay que evitar el uso de gets y la biblioteca conio de Borland. Las razones de ello en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html). * El segundo bucle se debe modificar de forma similar al primero y en la impresión del numero de paginas: Código Como ya te comente debes cambiar el tipo del campo "num_paginas" a int e imprimirlo utilizando el especificador "%d" ("%s" solo debe utilizarse para imprimir cadenas). Un saludo |