1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <stdio.h> #include <stdlib.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) { printf("\n\n Stack is Empty!\n"); return 0; } else { item = temp->data; top = temp->link; free(temp); return item; } } void main() { char c, i; printf("문자열 입력 : "); while ((c = getchar()) != '\n') push(c); printf("역순 문자열 출력 : "); while (top != NULL) { i = pop(); printf("%c", i); } printf("\n"); getchar(); } | cs |
한글은 유니코드 2바이트고 영어는 아스키코드 1바이트니까 한글을 받지 못하는건 알겠는데
여기서 한글까지 역순으로 받고 싶으면 어떻게하나요 ... 배열이면 차라리 2바이트 묶음으로 할텐데
malloc 이라서 감이 안잡힙니다
유니코드는 한문자당 2~4바이트일텐데?
char*하고 int값을 가지는 구조체를 만들고 거기에 문자를 스트링으로 담고 길이 저장 - 164260의 휘발성 계정
한글을 입력받는데 getchar를 쓰는것부터가 잘못된듯
그리고 한글을 2바이트라고 생각하는 것 보면 unicode가 아니라 mbcs일거같다