본문 바로가기

Native/C

4-22 mystrstrUpper

/***************************************************************************
*
*        Date        : 2005-04-20
*        Copyright    : aucd29
*        E-mail        : aucd29@daum.net
*
*        해당하는 string을 Upper시켜라
*
***************************************************************************/

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

#define MAX 100

void strstrUpper(char *, char *);

int main(int argc, char *argv[])
{    
    int iRes=0;

    if(argc < 3)
    {
        printf("error: argc\n");
        exit(0);
    }
    strstrUpper(argv[1],argv[2]);

    printf("Result : %s\n", argv[1]);
    return 0;
}

void strstrUpper(char *ps, char *pt)
{
    int i,sLen = strlen(ps), tLen=strlen(pt);
    int iCnt=0,tmpj=0,tmpi=0,tmpj2,iRes=0,iBreak=0;
    int mark=0, j=0;

    //
    // 내가 만든 방법
    //
    for(i=0;i<sLen;++i)
    {
        if(*(ps+i)!=*pt) continue;    // 같지 않으면
        else
        {
            // Init
            ++iCnt;
            tmpi = i+1;
            tmpj2 = 1;
            tmpj = tLen -1;

            while(1)
            {
                //
                // <- move
                //
                if(!mark)
                {
                    if(*(ps+i+tmpj)==*(pt+tmpj))
                    {
                        tmpj--;
                        ++iCnt;
                        mark = 1;
                    }
                    else
                    {
                        iCnt = mark = 0;
                        break;
                    }
                }
                //
                // -> move
                //
                else
                {
                    if(*(ps+tmpi)==*(pt+tmpj2))
                    {
                        ++tmpj2;
                        ++tmpi;
                        ++iCnt;
                        mark = 0;
                    }
                    else
                    {
                        iCnt = mark = 0;
                        break;
                    }
                }

                if(iCnt==tLen)
                {
                    for(j=i;j<tLen+i;++j)
                    {
                        if(*(ps+j)>='a')
                            *(ps+j) = *(ps+j)+'A'-'a';
                    }
                    i += tLen-1;
                //    ++iRes;
                    iCnt = mark = 0;
                    break;
                }
            }
        }
    }

//    return iRes;
}

'Native > C' 카테고리의 다른 글

[myfun] void strtoupper(char *); 소문자를 대문자로  (0) 2013.10.02
[myfun] void strtolower(char *); 대문자를소문자로  (0) 2013.10.02
4-22 문제 (mid)  (0) 2013.10.02
4-21일자 mystrcmp2  (0) 2013.10.02
4-21일자 문제  (0) 2013.10.02