Jump to content

Salem Ribeiro

Membros
  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

1 Neutral

Recent Profile Visitors

177 profile views
  1. Bom dia pessoal Eu fiz oq o grande @Mariohrecomendou e o problema foi solucionado, já tinha percebido via lldb a questão do '\n' sendo consumido pela variável name e imaginei que uma outra função resolvesse esse problema. Tentei o getchar, getc, getch e fflush e só apanhei. Vou estudar melhor essa questão do stdin, voltarei aqui se consegui avançar e encontrar algo mais clean. Muito obrigado @Marioh @Fernando Mercês
  2. Obrigado mario Eu encontrei essa solução nas internet. Mas é difícil acreditar que isso seja a melhor forma de resolver isso. De qualquer forma muito obrigado por responder.
  3. Existe um anexo caso queira testar. Minha maquina roda o elementary e estou complilando com gcc
  4. Alguém consegue me explicar de maneira clara pq meu programa passa reto pela função fgets? #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <ctype.h> /*----------------------------------------------------------------------------*/ /* Data Structs */ /*----------------------------------------------------------------------------*/ struct DataNode { int id; char *name; struct DataNode *node; }; struct DataMove { struct DataNode *previous; struct DataNode *next; }; struct HeadNode { int count; struct DataNode *first_node; }; /*----------------------------------------------------------------------------*/ /* Functions */ /*----------------------------------------------------------------------------*/ struct DataNode *create_list() { struct DataNode *node; node = (struct DataNode*)malloc(sizeof(struct DataNode)); if (node) return(node); else return(NULL); } struct DataNode *add(int i, char *name, struct DataNode *item) { item->id = i; item->name = name; item->node = create_list(); if (item->node) return (item->node); else return (NULL); } /* MAIN */ /*----------------------------------------------------------------------------*/ int main(void) { struct HeadNode head; struct DataMove node; char value_menu; char name[50]; head.count = 0; head.first_node = create_list(); node.next = head.first_node; if (head.first_node) { value_menu = '0'; do{ printf("\e[H\e[2J"); printf("ESTUDO DE LISTAS ENCADEADAS\n"); printf("1)\tAdicionar\n"); printf("2)\tProcurar\n"); printf("3)\tListar\n"); printf("4)\tOrdenar\n"); printf("5)\tExcluir\n"); printf("0)\tSair\n"); printf("MENU: "); scanf("%c", &value_menu); switch (value_menu) { case '1': printf("\nDigite o nome: "); fgets(name, 50, stdin); head.count ++; node.previous = node.next; node.next = add(head.count, name, node.next); printf("\n\nCadastro realizado com sucesso!!!"); break; } }while (value_menu != '0'); } else { printf("Não foi possível criar lista"); return (1); } return(0); } Debugando percebi que fgets acaba recebendo um \n e não sei como resolver esse problema ridículo estudo_list.c
×
×
  • Create New...