사랑합니다. 편안히 잠드소서
뛰다가 걷기도 하고 올라갔다가 내려가기도 하고 그러다 쉬기도 하고

by nVec
2009년 05월 20일
C 문자열의 순서를 뒤집으려면
우리나라의 컴공 교육에 대한 생각이 들게 하는 면접

    이 글 보고 좀 충격을 받았다. 대학원생이 저런 간단한 코드를 못짠다니!! 게다가 내가 다니는 학교도 서울대 아닌 S대. 아마 아니겠지만 왠지 내 주변의 이야기 같아서 더 충격을 받았다. 보통 이정도 수준의 코딩은 C를 처음접하면서 포인터나 문자열 처리를 배울때 해보기 마련이다. 그러니까 전공자라면 학부 1학년이나 늦어도 2학년 정도 즈음해서 이미 끝나는 수준이다. 혹시나 대학원생이 되면 좀더 수준 높은 작업을 하느라 코딩실력이 떨어지는것일까? 하는 의문이 들지만 아직 겪어보지 않아서 뭐라 말할 수는 없는 것같다.
    말이 길었다. 그렇다면 얼마나 간단한 코드인지 지금 한번 짜보도록 하자.

char*
str_rev(char* str)
{
    char* head;
    char* tail;
    char temp;
    if (str != NULL)
    {
        head = str;
        for(tail = str; *tail != '\0'; tail++)
            ;
        tail--;
        // tail을 구하는 것은 tail = &(str[strlen(str) -1]); 이런 방식도 가능하다
        while( (uint32_t)head < (uint32_t)tail)
        {
            temp = *head;    //스왑은 좋아하는 방식 아무거나 써도 무방
            *head = *tail;
            *tail = temp;
            head++; tail--;
        }
    }
    return str;
}

    이정도면 모든 시스템에서 잘 동작하지 않겠지만  대충 내가 가정한 시스템환경이라면 잘 돌아갈 것 같다. (사실 직접 c로 코딩해본지 벌써 몇개월은 지난거 같아서 코드 자체가 잘 동작하는지는 모르겠다)
    굳이 포인터를 쓴 이유는 그 면접자가 C의 문자열과 포인터의 관계도 파악 못했을 것 같다는 생각 때문이다.

    어쨌든 여기서 결론. 뭘하든 제대로 하고 넘어가자. 졸업하고 나중에 C로 문자열이나 뒤집고 앉아있지는 않겠지만 C 배울때 하찮은 거라 생각해서 대충대충 했으면 나도 저거 못짰을거 아닌가. 하여간 중요하지 않은건 없다.
by nVec | 2009/05/20 19:31 | 소프트웨어 | 트랙백 | 덧글(8)
트랙백 주소 : http://nvec.egloos.com/tb/2323197
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 라세엄마 at 2009/05/21 00:28
전 졸업했는데 포인터가 뭔지도 몰라요[...]
Commented by nVec at 2009/05/21 13:59
c를 안배웠으면 포인터를 모를 수도 있죠.
중요한건 자기가 배운 것의 기초적인 부분은 이해하고 있어야 하는거겠죠.
Commented by 라세엄마 at 2009/05/21 15:01
C랑 자바만 배웠는데요[..
Commented by nVec at 2009/05/21 16:41
헙... 이런 실례를..
잘 안쓰면 잊혀지죠. 저도 C/C++/자바를 학교에서 접했는데
자바는 거의 안써서 지금 자바에 대한건 거의 초보적인 수준밖에 몰라요
Commented by 라세엄마 at 2009/05/21 20:13
졸업한지 두달 지났는데요[.........
Commented by at 2009/06/03 01:07
님뭥미 -ㅅ-;;
Commented by nVec at 2009/06/03 01:21
예?
Commented by ㄴㄴ at 2014/08/13 15:50
근데 저 char * 이걸로 쓰면 문자열상수여서 수정이 불가능하지않나요?
저거 안돌아 갈거 같은데요..

:         :

:

비공개 덧글

최근 등록된 덧글
포토로그
최근 등록된 트랙백
rss

skin by nVec