if it is FIFO, the oldest is the tail of the list isn'it?
Here you're telling: if the list has only one node, take its number. you are not deleting anything.
in this case you are taking the node number of the first element, moving the head to the next node, and deleting the first node! of course it deletes the latest entry.
printf("%d\n",c); //now prints the variable that deletes but it's the most recent -.-'
This should work:
int dequeue(NODEPTR pnt, NODEPTR h)