amigos necesito crear agendas que lleve punteros dinamicos
lo primero que lleva obviamente es ingresar los amigos, nombre, numero de telefono
que elimine 1 amigo
que busque un amigo y apareza su numero de telefono y un listado general que muestre todo los contactos agregado
solo que lleva punteros y no se como hacerlo con punteros
si alguien me da una idea de mas o menos como empezar
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define p printf
#define s scanf
typedef struct agenda{
char nombre;
char apellido;
int edad;
};
int *puntero;
typedef agenda *puntero;
main()
{
p("\ndiga el nombre de su amigo: ");
s("%s",agenda.nombre);
p("\ndiga el apellido de su amigo: ");
s("%s",agenda.apellido);
p("\ndiga el numero de telefono de su amigo: ");
s("%s",agenda.telefono);
}
primero trato de hacerlo de 1 amigo pero no tengo ni idea de como hacerlo con puntero y structud
si me puede ir orientandolo para ver si lo puedo terminar y aprender hacerlo les agradeceria
Si no tienes un libro de calidad ya es hora de conseguir uno, empieza revisando el tema [Libros/Papers] C/C++ (http://foro.elhacker.net/programacion_cc/librospapers_cc-t296234.0.html). El programa tiene varios errores que se describen en detalle en |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).
Aparte de eso hay que evitar el uso de macros:
#define p printf
#define s scanf
Ello porque si cualquiera ve "printf/scanf" ya sabe de que se trata el asunto, no hay que revisar las definiciones.
Para trabajar con memoria reservada de forma dinámica lo primero que debes hacer es llamar a malloc/calloc/realloc, accedes al objeto utilizando operadores como "->" o "[]" y finalmente liberas la memoria mediante la función "free".
Un empujón:
#include <stdio.h>
#include <stdlib.h>
#define NUM_CHARS 128
struct agenda {
char nombre[NUM_CHARS];
char apellido[NUM_CHARS];
int edad;
};
int main(void)
{
struct agenda *p;
struct agenda *q;
int num_regs = 3;
int i;
int ch;
/* 1) Reservamos el bloque de memoria */
if ((p = malloc(num_regs * sizeof *p)) == NULL)
return EXIT_FAILURE;
/* 2) Leemos los registros */
q = p;
for (i = 0; i < num_regs; i++){
printf("Registro %d\n", i + 1);
printf("Nombre: ");
fflush(stdout);
fgets(q->nombre, NUM_CHARS, stdin);
printf("Apellidos: ");
fflush(stdout);
fgets(q->apellido, NUM_CHARS, stdin);
printf("Edad: ");
fflush(stdout);
scanf("%d", &q->edad);
while ((ch = getchar()) != EOF && ch != '\n')
;
q++;
}
/* 3) Impresion de los registros */
for (i = 0; i < num_regs; i++){
printf("Registro %d\n", i + 1);
printf("Nombre: %s\n", p[i].nombre);
printf("Apellidos: %s\n", p[i].apellido);
printf("Edad: %d\n\n", p[i].edad);
}
/* 4) Liberamos la memoria */
free(p);
return EXIT_SUCCESS;
}
Un saludo
amigo mira aqui lo hice de otra forma
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
struct contacto{
char nombre[40];
long telefono;
int edad;
};
typedef struct contacto tipo_contacto;
int contador;
int numerodeamigos;
int mostrar[100];
void main(void) {
tipo_contacto c1;
printf("cuantos amigos quiere agregar: ");
scanf("%d",&numerodeamigos);
system("cls");
for (contador=0; contador<numerodeamigos; contador++) {
printf("ingrese el nombre: ");
fflush(stdin);
gets(c1.nombre);
printf("Ingrese el telefono: ");
fflush(stdin);
scanf("%d",&c1.telefono);
printf("diga su edad: ");
fflush(stdin);
scanf("%d",&c1.edad);
system("cls");
printf("\n");
printf("-----------------------------------------\n");
system("pause");
}
printf("El nombre es: %s, \n", c1.nombre);
printf ("el telefono: %d \n",c1.telefono);
printf ("edad es: %d \n",c1.edad");
system("pause");
return 0;
}
si me puedes decir que error o que debo mejor
pd: como le puedo hacer un for para que se muestre la cantidades de veces segun los amigos que quize agregar
for (i=0; i<numerodeamigos; i++)
printf("El nombre es: %s, \n", c1[i].nombre);
printf ("el telefono: %d \n",c1[i].telefono);
printf ("edad es: %d \n",c1[i].edad");
no se si me entienden