Загрузка...

Почему код не работает?

Тема в разделе C/C++ создана пользователем deadeyes 24 дек 2022. 405 просмотров

  1. deadeyes
    deadeyes Автор темы 24 дек 2022 Заблокирован(а) 2 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;

    }

    }
     
    24 дек 2022 Изменено
  2. karamelko
    karamelko 24 дек 2022 Моё хобби - тёлки и махорка 70 22 ноя 2019
    скинь кодом
     
    1. deadeyes Автор темы
      karamelko, как? изначально хотел кодом залить, но не нашел как
    2. deadeyes Автор темы
  3. Membro
    Membro 24 дек 2022 SELL XBOX SE METHOD TG|DM 100 25 фев 2022
     
  4. vtlstolyarov
    vtlstolyarov 24 дек 2022 468 8 янв 2022
    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;
    }
    }
     
    24 дек 2022 Изменено
    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 26 дек 2022 239 7 апр 2020
     
    1. vtlstolyarov
      quda0, ты ему там что - пароль от твиттера Илона Маска скинул?
Top
Загрузка...