Buenas, estoy intentando hacer una pequeña agenda, que introduzcas el nombre, número y edad de 3 personas, y luego me salgan todos. Estoy hecho un lío, estoy intentando hacerlo así:
#include <stdio.h>
#define N 3

void entrada(agen);

typedef struct{
		char nombre[25];
		char telefono[10];
		int edad;
	}agenda;

main(){

	agenda agen;
	entrada(agen);

	int i;
	for(i=0;i<N;i++){
		printf("Amigo %s\t Telefono %s\t Edad %d",agenda[i].nombre,agenda[i].telefono,agenda[i].edad);
	}
	printf("\n");
}

void entrada(agen){
	int i;
	
	for(i=0;i<N;i++){
	printf("Introduzca el nombre: ");
	scanf("%c",&agen->nombre);
	
	printf("Introduzca el telefono: ");
	scanf("%c",&agen->telefono);
	
	printf("Introduzca la edad: ");
	scanf("%i",&agen->edad);		
	printf("\n");
	}
	
}
Menudo cacao mental llevo :/
Creo que quieres hacerlo como array seria asi:

agenda age[2]; ;N cantidad
age[0].edad=10;
printf("Edad %d",age[0].edad);

Saludos
Imagen
Pink escribió:Creo que quieres hacerlo como array seria asi:

agenda age[2]; ;N cantidad
age[0].edad=10;
printf("Edad %d",age[0].edad);

Saludos
No lo entiendo :/ ¿tendría que hacer eso también con nombre y teléfono? ¿Y porque [2] y [0]?
No. te explico

Tienes que hacer un arreglo de tu estructura. para así no reescribir los datos.

agenda age[2]; ;N cantidad

Primer arreglo de estructura
age[0].nombre
age[0].telefono
age[0].edad

segundo arreglo de estructura
age[1].nombre
age[1].telefono
age[1].edad


Saludos
Imagen
haber te dejo mi codigo esta un poco largo para que se entienda
#include<iostream>
using namespace std;

   struct Agenda{
   string nombre;
   long telefono;
   int edad;
   };

int main(){

  Agenda agen[3] ;

  for(int i=0;i<=2;i++){
     cout<<"ingrese su nombre"<<endl;
     cin>>agen[i].nombre;

     cout<<"ingrese su telefono"<<endl;
     cin>>agen[i].telefono;

     cout<<"ingrese su Edad"<<endl;
     cin>>agen[i].edad;
   }

   for(int j=0;j<=2;j++){
     cout<<"persona #"<<j+1<<" Nombre: "<<agen[j].nombre<<" Telefono: "<<agen[j].telefono<<" Edad: "<<agen[j].edad<<endl;
   }
 cin.get();
 return 0;
}
Skype:crack8111
Estoy un poco empolvado así que disculpa si solo te confundo mas.
Como bien dice Pink para que funcione necesitas declarar "agen" como una matriz de la variable agenda, lo puedes hacer con la constante "N" de valor "3" de este modo agenda aden[N], dentro de la función main declaras "agen" pero usas la variable "agenda" ademas de que en tu función "entrada" te falta definir el tipo de variable de entrada, que en tu caso es recomendable pasar un puntero del tipo de variable agenda, para que dentro de la función lo puedas tratar como matriz
void entrada(agenda* agen){
}

En esta función cometes un pequeño error pues le pasas a la función la variable y tu la tratas como un puntero a la variable "->" solo se usa en el segundo caso, para tu caso puedes usar "." simplemente ademas de usar los indices en el "for", otro pequeño detalle es que en los scanf de las cadenas de caracteres le dices que lea un char pero en realidad tu necesitas que lea una cadena de caracteres que en tu caso no se si vayas a recibir nombres con espacio o simplemente un nombre, en caso de recibir nombres con espacios necesitas usar otra función de entrada como puede ser gets que es capaz de manejar cadenas de caracteres con espacios.

Tu código si todo lo que te he dicho esta bien y recibes nombres sin espacios tu código podría quedar así.
#include <stdio.h>
#define N 3

 
typedef struct{
        char nombre[25];
        char telefono[10];
        int edad;
    }agenda;

void entrada(agenda * agen);
 
int main(void){
 
    agenda agen[N];
    entrada(agen);
 
    int i;
    for(i=0;i<N;i++){
        printf("Amigo %s\t Telefono %s\t Edad %d \n", agen[i].nombre, agen[i].telefono,agen[i].edad);
    }
    printf("\n");
    getch();
    return 0;
}
 
void entrada(agenda * agen){
    int i;
     
    for(i=0;i<N;i++){
        printf("Introduzca el nombre: ");
        scanf("%s", &agen[i].nombre);
     
        printf("Introduzca el telefono: ");
        scanf("%s", &agen[i].telefono);
     
        printf("Introduzca la edad: ");
        scanf("%i", &agen[i].edad);     
        printf("\n");
    }
    return;
}
We do what we must, because, we can-> [www.youtube.com/watch?v=Y6ljFaKRTrI]
Pasa a saludar: NeoDark-Labs.BlogSpot.mx
<<<<Proyectos en curso>>>>
[+]Restauración de SSDT
[+]Driver v3 - Ocultar drivers
[+]Anti-rootkit
Muchas gracias a los 3 por contestar. Pink, tardé en contestarte a ti, porque he estado dando vueltas a como solucionarlo con lo que me has dicho, pero no conseguía pillarlo por ningún lado :/

crack81, tu código tiene buena pinta, y no es largo, pero me confunden cosas como (cout, cin, end1, la forma de usar las << y >>), la verdad es que nunca lo había visto así en C, se ve que me queda muchísimo por aprender todavía.

En cuanto a orlando9427, tu código es el más parecido a como lo estaba intentando hacer, lo que no entiendo porque lo traté como un puntero a una variable "->", no pensé en el "." Y a la hora de declarar todavía no tengo las cosas del todo claras con los punteros...

Gracias de nuevo a todos por contestar, se agradece mucho la ayuda :)
lo del cout y los << es por que uso c++ que es una version mas reciente del lenguaje c y que posee la poo y otra seria de ventajas en lo personal me gusta mas que c saludos...
Skype:crack8111
Ahh, eso había pensado, pero no lo sabía cierto. Cuando controle lo suficiente de C me gustaría pasarme a C++ también.

Un saludo.
Responder

Volver a “C/C++”