c언어 스택 문자열 거꾸로 출력 질문입니다

익명 사용자의 이미지

<code>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef char element;

typedef struct stackNode {
element data;
struct stackNode *link;
}stackNode;

stackNode* top;

void push(element item)
{
stackNode* temp=(stackNode *)malloc(sizeof(stackNode));

temp->data = item;
temp->link = top;
top = temp;
}

element pop()
{
element item;
stackNode* temp=top;

if(top == NULL) {
printf("\n\n Stack is empty !\n");
return 0;
}

else{
item = temp->data;
top = temp->link;
free(temp);
return item;
}
}

void del()
{
stackNode* temp;
if(top == NULL) {
printf("\n\n Stack is empty !\n");
}

else {
temp = top;
top = top->link;
free(temp);
}
}

void printStack()

{
stackNode* p=top;
printf("\n STACK [ ");
while(p){
printf("%c ",p->data);
p = p->link;
}
printf("] ");
}

int main(void)
{

element item[50];
int i=0;
top = NULL;

printf("문자열 입력 : ");

do
{
scanf("%c",&item[i]);
push(item[i]);
i++;
printStack();
}while(item[i] != '\n');

printf("end");
}

</code>

질문 사항입니다.
문자열을 입력한후에 엔터를 누르면 엔터값이 입력되어 do-while 구문이 종료되어야 하지만 종료되지 않습니다
어떤것이 문제인지 모르겠습니다. 결과파일을 이미지 파일에 첨부하여 올립니다 도와주세요.
감사합니다

File attachments: 
첨부파일 크기
Image icon 오류.jpg17.37 KB
 의 이미지

글쎄요...

do
{
    scanf("%c",&item[i]); // 여기서 입력받을 때의 item[i]와
    push(item[i]);
    i++; // ?!
    printStack();
}while(item[i] != '\n'); // 여기서 확인할 때의 item[i]가 같은 곳일까요?