#include <stdio.h>
#include <stdlib.h>
void push();
void pop();
//char *data[100];
int top = -1;
char *stack;
void main(){
int cnt = 0;
stack = (char *)malloc(100*sizeof(char));
push();
cnt ++;
// printf("%sn", data[top]);
while(top >= 0){
pop();
}
}
void push(){
char str[10];
int cnt = 0;
while(cnt < 3){
scanf("%s", str);
++top;
stack[top] = str;
cnt++;
}
if(top >= 99)
printf("메모리가 꽉 찾습니다.");
}
void pop(){
printf("%s", stack[top--]);
}
미완성인 스텍으로 문자열을 저장 하는 것입니다.
무엇이 잘못되었는지 지적해주세요~/
처음부터 손대야 할것 같지만요~ㅎㅎ
잘부탁드립니다 __)
1. scanf에 %s 를 넣은 경우, 엔터 쳐질때까지 문자열 한 덩어리를 받아버립니다. printf에 넣은 경우도 마찬가지. 무더기로 들어가고 무더기로 나와버리니 원하는 작용과는 다르게 작동할겁니다.
2. 그리고 scanf는 줄 끝에 해당하는 문자를 받은 경우에만 끝나기 때문에(예를들면 CRLF), 한 글자 치면 바로바로 한 글자씩 들어가게 하려면 getchar 같은 함수를 쓰는편이 낫구요
한글자치고 엔터치고 한글자치고 엔터치고 이렇게 처리하려면 scanf에 %c 를 쓰셔야 합니다. 그것도 두번씩. (두번 쓰는 이유는 버퍼 비워야 한다는 내용으로 책 찾아보세요...)