[[problem:URI]]질문드립니다. ㅠㅠ

  • leesangwon5911
    leesangwon5911
    #include <stdio.h>
    #include <string.h>
    int main(void)
    {
        //freopen("input.txt", "r", stdin);
    
        int a = 0;
        scanf("%d", &a);
        while (a--)
        {
            char arr[81];
            char tmp[7][4] = { "%20","%21","%24" ,"%25" ,"%28" ,"%29" ,"%2a" };
            char tmp2[7] = {' ','!','$','%','(',')','*'};
            int i = 0;
            int j = 0;
            int k = 0;
            scanf("%s", arr);
            while (arr[i] != '\0')
            {
                while (j < 7)
                {
                    if (!(strncmp(&arr[i], &tmp[j][0], 3)))
                    {
                        arr[i] = tmp2[j];
                        memmove(&arr[i + 1], &arr[i + 3], strlen(arr) - (i + 3));
                        arr[strlen(arr) - 2] = '\0';
                        if (j == 3)
                        {
                        k = 0;
                        while (k < 7) {
                        if (!(strncmp(&arr[i], &tmp[k][0], 3)))
                        {
    
                        arr[i] = tmp2[k];
                        memmove(&arr[i + 1], &arr[i + 3], strlen(arr) - (i + 3));
                        arr[strlen(arr) - 2] = '\0';
    
                        }
                        k++;
                        }
                        }
    
                    }
                    j++;
                }
                j = 0;
                i++;
    
            }
    
    
            printf("%s\n", arr);
    
        }
        return 0;
    }
    

    %25 -> %로
    %2520 ->단순 ' ' 로
    %25%25 -> %%로 변환해봤는데 안돼네요..

    저기에 중간에 주석치면
    %2520 -> %20 으로도 해보고
    %2525 -? %25 로 나오게할수도있는데 머가 문제인지 모르겠어요..ㅠ


    5년 전
1개의 댓글이 있습니다.
  • Being
    Being

    이스케이핑이란 건, 표현할 수 없는 문자를 표현하기 위한 방법입니다. C/C++에서 '\' 문자를 써서 이스케이핑하는 것처럼요. "\\" 라는 문자열 리터럴은 실제로는 \이라는 한 문자를 표현하기 위한 것이고, "\n"이라는 문자열 리터럴은 실제로는 줄바꿈 문자 하나를 표현하기 위한 것이죠. 그러면 C/C++에서 "\\n" 이라고 쓰면 어떻게 되나요? 이 문제의 경우에도 동일합니다. 차근히 다시 잘 생각해 보세요.


    5년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.