fork(1) download
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. #define MAX 50
  5.  
  6. typedef struct {
  7. char numero[12]; //permite um telefone nacional
  8. char nome[31]; //permite 30 caracteres
  9. } Entrada;
  10.  
  11. typedef struct {
  12. int tamanho;
  13. Entrada *contatos;
  14. } Agenda;
  15.  
  16.  
  17.  
  18. void cadastrar(Agenda *agenda) {
  19. int op = 1;
  20. do {
  21. printf("Digite o telefone\n");
  22. scanf("%11s", agenda->contatos[agenda->tamanho].numero);
  23. printf("Digite o seu nome\n");
  24. scanf(" %30[^\n]", agenda->contatos[agenda->tamanho].nome);
  25. printf("Digite 1 para continuar 2 para parar\n");
  26. scanf("%d", &op);
  27. agenda->tamanho++;
  28. } while (op != 2);
  29. }
  30.  
  31. void imprime(Agenda agenda) {
  32. for (int i = 0; i < agenda.tamanho; i++) printf("%11s - %s\n", agenda.contatos[i].numero, agenda.contatos[i].nome);
  33. }
  34.  
  35. Agenda iniciaAlocaAgenda() {
  36. return (Agenda) { .tamanho = 0, .contatos = malloc(sizeof(Entrada) * MAX) };
  37.  
  38. }
  39.  
  40. void liberaAgenda(Agenda agenda) {
  41. free(agenda.contatos);
  42. }
  43.  
  44.  
  45. int main() {
  46. Agenda agenda = iniciaAlocaAgenda();
  47. int op = 1;
  48. do {
  49. printf("1-Adicionar numero\n");
  50. printf("2-Remover numero\n");
  51. printf("3-Procurar numero\n");
  52. printf("4-Imprimir\n");
  53. printf("6-Reincia a agenda\n");
  54. printf("7-Parar\n");
  55. scanf("%d", &op);
  56. switch (op) {
  57. case 1:
  58. cadastrar(&agenda);
  59. break;
  60. case 2:
  61. case 3:
  62. break;
  63. case 4:
  64. imprime(agenda);
  65. break;
  66. case 5:
  67. break;
  68. case 6:
  69. agenda = iniciaAlocaAgenda();
  70. break;
  71. }
  72. } while (op != 7);
  73. liberaAgenda(agenda);
  74. }
  75.  
  76. //https://pt.stackoverflow.com/q/310814/101
Success #stdin #stdout 0s 4376KB
stdin
1
11987654321
joão
1
1213141516
josé
2
4
7
stdout
1-Adicionar numero
2-Remover numero
3-Procurar numero
4-Imprimir
6-Reincia a agenda
7-Parar
Digite o telefone
Digite o seu nome
Digite 1 para continuar 2 para parar
Digite o telefone
Digite o seu nome
Digite 1 para continuar 2 para parar
1-Adicionar numero
2-Remover numero
3-Procurar numero
4-Imprimir
6-Reincia a agenda
7-Parar
11987654321 - joão
 1213141516 - josé
1-Adicionar numero
2-Remover numero
3-Procurar numero
4-Imprimir
6-Reincia a agenda
7-Parar