Bueno, gracias por todo, si al final era más simple de lo que parecía
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct _contacto {
char nombre[33];
char telefono[13];
struct _contacto *siguiente;
};
struct _contacto *primero, *ultimo;
void agregar_contacto()
{
struct _contacto *nuevo;
nuevo
= (struct _contacto
*)malloc(sizeof(struct _contacto
)); if(nuevo==NULL){
printf("\nNo hay espacio suficiente."); return;
}
printf("\n\nAgregar contacto\n"); fgets(nuevo
->nombre
,32,stdin
); fgets(nuevo
->telefono
,12,stdin
); nuevo->siguiente = NULL;
if(primero==NULL){
primero = nuevo;
ultimo = nuevo;
} else {
ultimo->siguiente = nuevo;
ultimo = nuevo;
}
}
void buscar_contacto_tlfn()
{
struct _contacto *busqueda, *actual;
busqueda
= (struct _contacto
*)malloc(sizeof(struct _contacto
)); if(busqueda==NULL){
printf("\nNo hay espacio suficiente."); return ;
}
printf("\n\nBuscar contacto por telefono\n"); printf("----------------------------"); fgets(busqueda
->telefono
,12,stdin
); actual = primero;
while(actual!=NULL){
if(strcmp(actual
->telefono
,busqueda
->telefono
)==0){ printf("+Nombre: %s\n", actual
->nombre
); return;
}
actual = actual->siguiente;
}
}
void mostrar_menu()
{
printf("1. Agregar contacto\n"); printf("2. Buscar contacto por telefono\n"); }
int main()
{
int opcion = 0;
char bufferOpcion[5];
while(opcion!=3){
mostrar_menu();
fgets(bufferOpcion
,sizeof(bufferOpcion
),stdin
); sscanf(bufferOpcion
, "%d", &opcion
); switch(opcion){
case 1:
agregar_contacto();
break;
case 2:
buscar_contacto_tlfn();
break;
default:
break;
}
}
return 0;
}
Saludos!