Я пытаюсь убедиться, что моя функция стека инициализации получает все значения, вводимые пользователем, но сейчас мои коды печатают разные значения из исходных значений, которые я вводил. Я использовал. Кроме того, я работаю над различными функциями для работы со стеклом, такими как pop, push, переходит в начало стека и т. Д. Будут ли они работать во время цикла? Однако, здесь функцию стека инициализацииИнициализация стека до 10 значений
typedef struct stack
{
int* darr;
int size;
int top;
}stack;
stack * initStack(int elements)
{
stack *s;
s = (stack *)malloc(sizeof(stack));
s->darr = (int *)malloc(sizeof(int)*elements);
s->size = 0;
s->top = elements;
return s;
}
в основной()
int main()
{
stack s;
int i;
printf("Hello user, please enter 10 different values to build your stack: \n");
for(i = 0; i < 10; i++)
{
scanf("%d", initStack(i));
}
printf("\nYou entered: \n%d\n\n", initStack(i));
return 0;
}
немного слишком много вещей, чтобы изменить там: выделение (вы выделить 10 стеков, пустых), вы Scanf целого числа в структуры, печать мусора (потому что вы выделить новый стек и вы вернетесь, что) и в любом случае вы просите распечатать много целых чисел, но вы передаете одно значение стека *. Вызов initstack только один раз с помощью стека * pStack = initstack (10) и printf/scanf в pStack-> darr ... –
Ваше использование 'scanf' и' printf' неверно. Будет полезно прочитать учебное пособие или два о том, как их использовать. Вот стартер. http://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-output –
В C вы не должны бросать 'malloc' - [ли я делаю результат malloc?] (http: //stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – crashmstr