프로그래밍

 3198, 1/160 회원가입  로그인  
   kooljames
   [c언어] 문제점좀 찾아주세요!

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6327 [복사]


제가 문자열을 뒤집는 함수를 만들었는데요 프로그램이 작동이 안해요

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

char* rev(char * input)
{
        char rev[30];
        int i;

        for(i=strlen(input)-1;i>=0;i--)
                rev[strlen(input)-1-i]=input[i];

        rev[strlen(input)]='\0';

        return rev;
}

int main()
{      
        printf("%s",rev("hello"));
}

출력 결과:
「아무키나 누르시오...

  Hit : 5076     Date : 2013/04/08 05:52



    
key rev 함수 내부에서 할당한 local 배열 rev 를 리턴하였기 때문입니다.
함수 내부에서 할당한 local 공간은 stack 을 사용하며 함수가 끝나는 시점에 제거됩니다.
그 때문에 비정상적인 출력 결과를 얻으시는 것이구요.
return 이전에 printf 함수로 출력해보시면 결과가 제대로 보이실 겁니다.
함수간의 데이터 공유를 위해서는 전역 변수를 사용하시면 됩니다.

2013/04/08