C언어 포인터 인자 전달 후 처리 방법에 대해 질문드립니다.
글쓴이: storyia / 작성시간: 수, 2018/01/03 - 9:12오후
캐릭터 포인터를 인자로 받는 함수를 만들어 그 안에서 인자를 변형시킨 다음
메인 함수에서 그 인자를 다른 배열에 할당하는 프로그램을 만들려고 합니다.
그런데 계속 프린트하는 부분에서 run-time 에러가 나는데 이유를 모르겠습니다..
아래는 코드 일부분입니다.
typedef struct stack Stack; struct stack { char *arr; int len; int top; }; int test(Stack *S, char *try) { *try=S->arr[S->top--]; printf("%c", try); //error가 나는 부분입니다. 어떻게 프린트를 해야하는지 모르겠습니다... return 1; } int main(void) { Stack *S1=(Stack *)malloc(sizeof(Stack)); S->len=100; S->top=-1; S->arr=(char *)malloc(sizeof(char)*100); char dum, result1[20]; int k=0, result; while(1){ result=test(S1, &dum); if(result==1) { result1[k]=dum; printf("%s\n",dum);//여기서도 역시 오류가 납니다 k++; printf("%s가 할당\n",result1[k]);//출력해보니 할당이 되지 않은 상태였습니다. } } return 0;
Stack에는 위 코드에는 나와있지 않지만 미리 ((di)go)를 집어 넣은 상태이고, top또한 stack에 들어가있는 요소의 수에 맞춰 증가되어 있는 상태입니다. test함수는 괄호가 끝나는 시점까지 계속 진행 되며, )og)id((순으로 나오는 것을 기대하며 작성했습니다.
포인터 인자를 전달 후 그 인자를 다시 출력하려면 혹시 어떻게 작성해야 하는지 알려주실수 있으신가요?
Forums:
정확히 어느 시점에 문자를 출력하려는 건지 문자열을
정확히 어느 시점에 문자를 출력하려는 건지 문자열을 출력하려는 건지는 모르겠습니다만, printf의 포맷 문자열과 대응되는 인자가 서로 일치하지를 않네요.
char 를 출력할 때 %c 를 지정하고 해당 char의 '값'을,
문자열을 출력할 때 %s 를 지정하고 해당 문자열의 첫 글자의 '주소'를 주시면 됩니다.
좋은 하루 되세요!
감사합니다!
그렇게 고치니깐 바로 출력이 되네요!ㅎㅎ 감사합니다~
Compile 할 때 Error 뿐 아니라
Compile 할 때 Error 뿐 아니라 Warning 도 보면 힌트를 얻을 수도 있습니다.
gcc -Wall 로 컴파일 해 보셔요.
세벌 https://sebuls.blogspot.kr/
댓글 달기