Acceso a los miembros de un struct
Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 41 de 63.
Ahora que puedes crear variables struct, necesitas aprender a trabajar con los datos almacenados en ellas. El operador punto (.) es la clave para acceder a los miembros individuales de una variable struct y modificarlos.
La sintaxis para acceder a los miembros de una estructura es sencilla:
structVariable.memberNameUsando nuestro ejemplo de la estructura Point, puedes leer y escribir en sus miembros:
struct Point p1;
// Escribir en los miembros de la estructura
p1.x = 10;
p1.y = 20;
// Leer los miembros de la estructura
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);El operador de punto funciona exactamente igual que el acceso a cualquier otra variable: puedes usarlo en asignaciones, operaciones aritméticas, llamadas a funciones o en cualquier lugar donde usarías una variable normal de ese tipo. Cada miembro se comporta como una variable independiente de su tipo declarado, lo que te permite manipular los datos de la estructura de forma organizada e intuitiva.
Desafío
FácilCrea un programa en C que demuestre cómo acceder a los miembros de una estructura y modificarlos usando el operador punto. Tu programa debe:
- Definir un
structllamadoCarcon los siguientes miembros:- Un entero
yearpara almacenar el año de fabricación - Un arreglo de caracteres
brandde tamaño 20 para almacenar la marca del automóvil - Un entero
mileagepara almacenar el kilometraje actual - Un número de punto flotante
pricepara almacenar el precio del automóvil
- Un entero
- Crear una variable de tipo
CarllamadamyCar - Leer los siguientes valores de entrada y asignarlos a los miembros de la estructura usando el operador punto:
- Leer un entero para el año y asignarlo a
myCar.year - Leer una cadena para la marca y copiarla en
myCar.brandconstrcpy()(no se puede asignar un arreglo con=) - Leer un entero para el kilometraje y asignarlo a
myCar.mileage - Leer un número de punto flotante para el precio y asignarlo a
myCar.price
- Leer un entero para el año y asignarlo a
- Después de leer todos los valores, realiza las siguientes operaciones:
- Aumentar el kilometraje en 1000 usando
myCar.mileage += 1000; - Disminuir el precio en 500.0 usando
myCar.price -= 500.0;
- Aumentar el kilometraje en 1000 usando
- Imprimir la información del automóvil usando el operador punto para acceder a cada miembro en este formato exacto:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Este desafío pone a prueba tu comprensión del operador punto para leer y escribir en los miembros de una estructura. Practicarás asignar valores a los miembros de una estructura, realizar operaciones aritméticas con ellos y acceder a ellos para mostrar la salida.
Por ejemplo, si la entrada es:
2020
Toyota
50000
25000.50La salida debe ser:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Pruébalo tú mismo
#include <stdio.h>
#include <string.h>
// TODO: Define la estructura Car aquí
int main() {
// TODO: Crea una variable de tipo Car llamada myCar
// Lee los valores de entrada
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Asigna los valores de entrada a los miembros de la estructura usando el operador punto
// TODO: Modifica el kilometraje y el precio según lo especificado
// TODO: Imprime los detalles del coche usando el operador punto
printf("Car Details:\n");
// Imprime Year, Brand, Mileage y Price aquí
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres7Estructuras (structs)
¿Qué es un struct?Declaración de un structCreación de variables de tipo structAcceso a los miembros de un structInicialización de structsResumen: Struct de datos de estudiantes2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenasPractica por tu cuenta: Compilador de C online