Fecha y hora actual: Viernes 20 Sep 2019 20:02
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Acceder a un miembro PUNTERO de una ESTRUCTURA

Responder al Tema

Índice del Foro > C, C#, Visual C++ > Acceder a un miembro PUNTERO de una ESTRUCTURA

Autor Mensaje
WhiteSkull
CoAdmin


Registrado: 20 Mar 2009
Mensajes: 3136
Ubicación: y*width+x

Mensaje Publicado: Viernes 29 May 2009 21:33

Título del mensaje: Acceder a un miembro PUNTERO de una ESTRUCTURA

Responder citando

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct 
{
    char *Nombre;
      unsigned int edad;
}   Datos;

class Clase
{
    Datos Prueba;
public:
    Clase(){ //Constructor
      Prueba.Nombre="Triniti";
    }
    void CualEsTuNombre() {
       printf("Mi nombre es %s",Prueba.Nombre);
    }
};

void funcion(Datos *Loquesea);

int main(){
    Clase *clase=new Clase();
    Datos *InfoConPuntero=(Datos *)malloc(sizeof(Datos)+1);
    Datos Info;// tambien podemos asignar estaticamente al comienzo
            /* usando: */ //static Datos Info={"Pablo Clava un Clavo",33};
 // Si os fijais el acceso es diferente
 // cuando lo pasamos por referencia en una funcion o
 // cuando la manejamos directamente desde un tipo
 // Aqui para acceder al miembro usamos un punto
    Info.Nombre="Hola Mundo";
 // Y aquí usamos la flechita ->   
    InfoConPuntero->Nombre="Adios Mundo Cruel";
    funcion(&Info);
    
      printf("Contenido= %s\n",Info.Nombre);
    // Comprobamos que DENTRO de una clase tambien
    // se respetan las normas al igual que en el main (funcion);
    clase->CualEsTuNombre();
    printf("/n%s",InfoConPuntero->Nombre);
    getchar();
    return 0;
}

void funcion(Datos *Loquesea)
{
    // Para acceder desde el PUNTERO
    // a los miembros usamos este operador ->
    Loquesea->Nombre="Clanver";
    Loquesea->edad=34;
}


Hay más cosas pero de momento ésto es lo básico que hay que conocer... suerte Ok

Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
WhiteSkull
CoAdmin


Registrado: 20 Mar 2009
Mensajes: 3136
Ubicación: y*width+x

Mensaje Publicado: Sábado 30 May 2009 19:30

Título del mensaje: Re: Acceder a un miembro PUNTERO de una ESTRUCTURA

Responder citando

Otro ejemplo:

Código:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct tDiccionario
{
   char * Palabra;
   char * Definicion;
   tDiccionario * Siguiente;
};

void Inicializa(tDiccionario *D);
void Inserta(tDiccionario *D,char *palabra, char *definicion);
void Lista(tDiccionario *D);
void Lista(tDiccionario *D, char * texto);
bool cmpcad(const char *texto1, const char * text2);
void Borra(tDiccionario *D);
void Borra(tDiccionario *D,char *palabra);

int main()
{
   // Declaracion e inicializacion del Diccionario
   tDiccionario *Diccionario=(tDiccionario *)malloc(sizeof(tDiccionario)+1);
   Inicializa(Diccionario);

   // Insertamos contenido al diccionario
   Inserta(Diccionario,"Hola","Saludo castizo o comun");
   Inserta(Diccionario,"Perra","Tu hermana mismo");
   Inserta(Diccionario,"Lolas","Eso que llevas colgando");
   Inserta(Diccionario,"Lufi","Rey de los mares");
   Inserta(Diccionario,"Ostia","La que te vas a llevar");
   
   //Borra(Diccionario); // Borrar completamente
   Borra(Diccionario,"Perra"); // Borrar una determinada palabra
   Borra(Diccionario,"Lolas"); // Borrar una determinada palabra

   Lista(Diccionario); // Lista completa
   //Lista(Diccionario,"e"); // Listado por medio de filtro

   printf("\nPulse una tecla para continuar");   getchar();
   return 0;
}

void Inicializa(tDiccionario *D){
   D->Palabra=NULL;
   D->Definicion=NULL;
   D->Siguiente=NULL;
}

void Inserta(tDiccionario *D,char *palabra,char *definicion)
{
   tDiccionario *aux=(tDiccionario *)malloc(sizeof(tDiccionario)+1);

   if (D->Palabra==NULL) // Diccionario VIRGEN
   {  // Es tu primera vez cariño?
      D->Palabra=palabra;
      D->Definicion=definicion;
      D->Siguiente=aux; // Le guardamos un hueco para otra vez
      D->Siguiente->Siguiente=NULL;
   } else { // Si ya existe una Madre creamos Hijos
      aux=D->Siguiente;
      // Buscamos un hueco o un Holow XD para poner los datos
      while (aux->Siguiente!=NULL) { aux=aux->Siguiente; };
      aux->Palabra=palabra;
      aux->Definicion=definicion;
      // Le guardamos un hueco para la proxima vez que venga
      aux->Siguiente=(tDiccionario *)malloc(sizeof(tDiccionario)+1);
      aux->Siguiente->Siguiente=NULL;
   }
}

void Lista(tDiccionario *D)
{
   tDiccionario *aux=D;

   while(aux->Siguiente!=NULL)   {
      printf("Palabra: %s (definicion): %s \n",aux->Palabra, aux->Definicion);
      aux=aux->Siguiente;
   }
}

void Lista(tDiccionario *D, char * texto){
   tDiccionario *aux=D;
   while(aux->Siguiente!=NULL)   {
      if (cmpcad(texto,aux->Palabra) || cmpcad(texto,aux->Definicion))
      printf("Palabra: %s (definicion): %s \n",aux->Palabra, aux->Definicion);
      aux=aux->Siguiente;
   }
}

bool cmpcad(const char * texto1,const char * texto2){
   bool resultado=false;
   int c,bandera=0;
   if (strlen(texto1)>strlen(texto2)) {
       for (int i=0;i<(strlen(texto1)-strlen(texto2)+1);i++){
          bandera=0;
          for (c=0;c<strlen(texto2);c++)
             if (texto2[c]==texto1[i+c]) {
                bandera++; if (bandera==strlen(texto2)) resultado=true;
             } else bandera=0;
      }
   } else {
       for (int i=0;i<(strlen(texto2)-strlen(texto1)+1);i++){
          bandera=0;
          for (c=0;c<strlen(texto1);c++)
             if (texto1[c]==texto2[i+c]) {
                bandera++; if (bandera==strlen(texto1)) resultado=true;
             } else bandera=0;
      }
   }
   return resultado;
}

void Borra(tDiccionario *D){
   free(D);
}

void Borra(tDiccionario *D,char *palabra){
   tDiccionario *aux=D,*NuevoDiccionario=(tDiccionario *)malloc(sizeof(tDiccionario)+1);
   Inicializa(NuevoDiccionario);
   while(aux->Siguiente!=NULL)   {
      if (!cmpcad(palabra,aux->Palabra))
         Inserta(NuevoDiccionario,aux->Palabra, aux->Definicion);
      aux=aux->Siguiente;
   }
   D->Definicion=NuevoDiccionario->Definicion;
   D->Palabra=NuevoDiccionario->Palabra;
   D->Siguiente=NuevoDiccionario->Siguiente;
   Borra(NuevoDiccionario);
}

Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Generar JSON anidado con esta estructura

elmoyer JavaScript 0 Sábado 25 Ago 2018 13:03 Ver último mensaje
El foro no contiene ningún mensaje nuevo

[C] Como se libera la memoria en estructura din...

DanielC C, C#, Visual C++ 1 Miércoles 11 Ene 2017 22:32 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Error al acceder a base de datos - C#

1kk4ku C, C#, Visual C++ 1 Viernes 23 Ene 2015 10:00 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda para crear estructura de clases

Jesus003 Visual Basic .NET 3 Jueves 02 Oct 2014 16:51 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Tablas de multiplicar con puntero(lenguaje C)

DanielC C, C#, Visual C++ 12 Miércoles 09 Jul 2014 20:52 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,