Я ищу реализовать стек в c. Пытаясь реализовать это, я столкнулся с проблемой, с которой ни я, ни мой учитель не знаем, что делать. Я инициализирую некоторые значения в struct (Stack), и после вызова функции scanf значения элементов в этом стеке почему-то изменились.
Я сократил код до минимума, и проблема все еще возникает. Кроме того, это кажется проблемой на моем компьютере, но когда я пробую программу на другом компьютере, она волшебным образом работает. Я стараюсь не говорить «мой компьютер делает это неправильно», но это очень расстраивает.
Пример кода:
#include <stdio.h>
typedef struct Stack {
int elementSize;
} Stack;
int stackInit(Stack *stack, int elementSize);
int main(int argc, char *argv[]){
Stack stack;
stackInit(&stack,sizeof(char));
char menuInput;
printf("[main] stack->elementSize = %d\n",stack.elementSize); //OK
scanf("\n%s", &menuInput); //USER INPUT
printf("[main] stack->elementSize = %d\n",stack.elementSize); //NOK
}
int stackInit(Stack *stack, int elementSize){
stack->elementSize = elementSize;
printf("[stackInit] stack->elementSize = %d\n",stack->elementSize); //OK
return 0;
}
Выход:
[stackInit] stack->elementSize = 1
[main] stack->elementSize = 1
1
[main] stack->elementSize = 0
Заранее спасибо!