fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX 12
  6.  
  7. typedef struct aluno {
  8. char nome[40];
  9. int idade;
  10. } Aluno;
  11.  
  12. typedef struct lista {
  13. size_t qnt;
  14. Aluno dados[MAX];
  15. } Lista;
  16.  
  17. Lista* cria() {
  18. Lista *l = malloc(sizeof(Lista));
  19. if (l != NULL)
  20. l->qnt = 0;
  21. return l;
  22. }
  23.  
  24. int insere(Lista *l, Aluno al) { //insere no inicio
  25. if (l == NULL)
  26. return 0;
  27. if (l->qnt == MAX)
  28. return 0;
  29. for(int i = l->qnt; i > 0; i--) {
  30. l->dados[i] = l->dados[i - 1];
  31. }
  32. memcpy(&l->dados[0], &al, sizeof(Aluno));
  33. l->qnt++;
  34. return 1;
  35. }
  36.  
  37. void liberar(Lista *l) {
  38. free(l);
  39. }
  40.  
  41. void exibe(Lista *l) {
  42. if (l->qnt == 0) {
  43. printf("\nLista esta vazia.\n\n");
  44. }
  45. for (int i = 0; i < l->qnt; i++) {
  46. printf("Aluno: %s", l->dados[i].nome);
  47. printf(", de Idade: %d\n", l->dados[i].idade);
  48. }
  49. }
  50.  
  51. int main() {
  52. Lista *l = cria();
  53. Aluno al;
  54. int opc;
  55. do {
  56. printf("\tEscolha uma Opcao\n");
  57. printf("O: sair\n");
  58. printf("1: Cadastrar Aluno\n");
  59. printf("2: Exibir Alunos\n");
  60. printf("Opcao: ");
  61. scanf("%d", &opc);
  62. switch(opc) {
  63. case 0:
  64. break;
  65. case 1: //inconsistĂȘncia
  66. printf("\nDigite o nome: ");
  67. scanf("%s", al.nome);
  68. printf("Digite a idade: ");
  69. scanf("%d", &al.idade);
  70. insere(l, al);
  71. system("cls");
  72. break;
  73. case 2:
  74. exibe(l);
  75. break;
  76. default:
  77. printf("Opcao Invalida.\n");
  78. break;
  79. }
  80. } while (opc != 0);
  81. liberar(l);
  82. }
Success #stdin #stdout #stderr 0s 2924KB
stdin
1
joao
10
1
jose
20
1
maria
30
2
0
stdout
	Escolha uma Opcao
O: sair
1: Cadastrar Aluno
2: Exibir Alunos
Opcao: 
Digite o nome: Digite a idade: 	Escolha uma Opcao
O: sair
1: Cadastrar Aluno
2: Exibir Alunos
Opcao: 
Digite o nome: Digite a idade: 	Escolha uma Opcao
O: sair
1: Cadastrar Aluno
2: Exibir Alunos
Opcao: 
Digite o nome: Digite a idade: 	Escolha uma Opcao
O: sair
1: Cadastrar Aluno
2: Exibir Alunos
Opcao: Aluno: maria, de Idade: 30
Aluno: jose, de Idade: 20
Aluno: joao, de Idade: 10
	Escolha uma Opcao
O: sair
1: Cadastrar Aluno
2: Exibir Alunos
Opcao: 
stderr
sh: 1: cls: not found
sh: 1: cls: not found
sh: 1: cls: not found