Нужно что бы вводимые значения забивались в список. Только начинаю изучать эту тему, поэтому буду благодарен за обьяснение ошибки. #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; } } 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; } }
deadeyes, я не совсем понял что такое char **av , может две звёздочки предназначались стэку? я переделал немного вот так: #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; } } 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; } }
vtlstolyarov, это массив указателей на строки вродде ** указывает на то, что av является массивом указателей.
Membro, Тогда как-то так? #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; } } 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; } }