Несколько вещей,
temp = "\ 0"
На самом деле в строку будут помещены два \ 0, тот, который вы написали, и один, подразумеваемый в кавычке.
PIN + я должен быть разыменован (с помощью *), или он будет продолжаться и продолжаться, если вы не можете гарантировать нулевой указатель в конце адресного пространства.
while (*(PIN+i))
Затем для копирования символов, а не указателей, оператор присваивания также должен быть разыменован.
temp[i]=*(PIN+i);
i++; // Because the pointer needs to be incremented
Кроме того, почему бы вам просто не использовать strcpy? или strncpy?