Загрузка...

Why doesn't the code work?

Thread in C/C++ created by deadeyes Dec 24, 2022. 404 views

  1. deadeyes
    deadeyes Topic starter Dec 24, 2022 Banned 2 Oct 6, 2021
    Нужно что бы вводимые значения забивались в список. Только начинаю изучать эту тему, поэтому буду благодарен за обьяснение ошибки.

    C
    #include <stdio.h>

    #include <stdlib.h>

    typedef struct s_stack

    {
    int number;

    struct s_stack *next;

    } t_stack;

    t_stack *create_node(int value)

    {

    t_stack *node;

    node = malloc(sizeof(t_stack));

    node -> number = value;

    node -> next = NULL;

    return (node);

    }

    void fill_stack(t_stack *a, int ac, char **av)

    {

    int i;

    i = 1;

    while (i < ac)

    {

    t_stack *a = create_node(atoi(av));

    i++;

    }

    }

    int main(int ac, char **av)

    {

    t_stack *stack_a;

    stack_a = NULL;

    fill_stack(stack_a, ac, av);

    while (stack_a != NULL)

    {

    printf("%d\n", stack_a -> number);

    stack_a = stack_a -> next;

    }

    }
     
  2. karamelko
    karamelko Dec 24, 2022 Моё хобби - тёлки и махорка 70 Nov 22, 2019
    скинь кодом
     
    1. deadeyes Topic starter
      karamelko, как? изначально хотел кодом залить, но не нашел как
    2. deadeyes Topic starter
  3. Membro
    Membro Dec 24, 2022 SELL XBOX SE METHOD TG|DM 100 Feb 25, 2022
     
  4. vtlstolyarov
    deadeyes,
    я не совсем понял что такое
    char **av
    , может две звёздочки предназначались стэку? я переделал немного вот так:

    C
    #include <stdio.h>
    #include <stdlib.h>

    typedef struct s_stack
    {
    int number;
    struct s_stack *next;
    } t_stack;

    t_stack* create_node(int number)
    {
    t_stack* node = malloc(sizeof(t_stack));
    node->number = number;
    node->next = NULL;
    return node;
    }

    void fill_stack(t_stack** head, int ac, char* av)
    {
    for (int i = 0; i < ac; i++)
    {
    t_stack* node = create_node(atoi(av));
    node->next = *head;
    *head = node;
    }
    }

    int main()
    {
    int ac = 3;
    char* av = "42";

    t_stack* stack_a = NULL;
    fill_stack(&stack_a, ac, av);
    while (stack_a)
    {
    printf("%d\n", stack_a->number);
    stack_a = stack_a->next;
    }
    }
     
    1. Membro
      vtlstolyarov, это массив указателей на строки вродде
      ** указывает на то, что av является массивом указателей.
    2. vtlstolyarov
      Membro, Тогда как-то так?
      C
      #include <stdio.h>
      #include <stdlib.h>

      typedef struct s_stack
      {
      int number;
      struct s_stack *next;
      } t_stack;

      t_stack* create_node(int number)
      {
      t_stack* node = malloc(sizeof(t_stack));
      node->number = number;
      node->next = NULL;
      return node;
      }

      void fill_stack(t_stack** head, int ac, char** av)
      {
      for (int i = 0; i < ac; i++)
      {
      t_stack* node = create_node(atoi(*(av+i)));
      node->next = *head;
      *head = node;
      }
      }

      int main()
      {
      int ac = 3;
      char* av[] = { "11", "22", "33" };

      t_stack* stack_a = NULL;
      fill_stack(&stack_a, ac, av);
      while (stack_a)
      {
      printf("%d\n", stack_a->number);
      stack_a = stack_a->next;
      }
      }
  5. quda0
    quda0 Dec 26, 2022 239 Apr 7, 2020
     
    1. vtlstolyarov
      quda0, ты ему там что - пароль от твиттера Илона Маска скинул?
Top
Loading...