I've written code as below and have a problem. I want to add task names to my list but when I enter different names and try to display them, it shows me the lastest name I entered for each element in list. How can I correct? My codes has been written in in Turkish language but I am sure that you understand. (Also I translated in comment lines)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct element   // element
{
    char *taskName;  // task name
    struct element *next;  // next
};
typedef struct element Element;
typedef Element *Elementptr;
Elementptr new_element(char *taskName)  // new element
{
    Elementptr element = (Element *)malloc(sizeof(Element));
    element->taskName = taskName;
    element->next = NULL;
    return element;
}
struct stack  // stack
{
    Elementptr top;  // top
};
typedef struct stack stack;
typedef stack *stackptr;
stackptr new_stack()  // new stack
{
    stackptr stack = (stack *)malloc(sizeof(stack));
    stack->top = NULL;
    return stack;
}
Elementptr top(stackptr c)  // top
{
    return c->top;
}
int stack_empty(stackptr c)  // empty stack
{
    if (c->top == NULL)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
void stack_add(stackptr c, Elementptr new)  // add stack
{
    new->next = c->top;
    c->top = new;
}
Elementptr stack_delete(stackptr c)  // delete stack
{
    Elementptr e = c->top;
    if (!stack_empty(c))
    {
        c->top = c->top->next;
    }
    return e;
}
void stack_write(stackptr c)  // write stack
{
    printf("\n\n*** Stack'te Bulunan Gorevler ***\n");
    Elementptr p;
    int sayac = 0;
    while (!stack_empty(c))
    {
        p = stack_delete(c);
        sayac++;
        printf("\nStack d. gorevi: s\n", sayac, p->taskName);
    }
}
int main()
{
    int devam;  // continue
    char gorevIsmi[32];  // task name
    bool dogruMu = true;  // isTrue
    stackptr test = new_stack();
    printf("-- Gorev addmeyi sonlandirmak icin \"157\" giriniz --\n");   // to stop program enter 157
    do 
    {       
        printf("\nenter task name: ");  // enter task name
        scanf("s", gorevIsmi);
        Elementptr new = new_element(gorevIsmi);
        stack_add(test, new);
        printf("\nDevam durumu giriniz (Rakam): ");
        scanf("d", &devam);
        if (devam == 157)
        {
            dogruMu = false;
        }
    } while (dogruMu == true);
    stack_write(test);
}
 
     
    