URI문제 질문드립니다!!

  • PeterFromSeoul
    PeterFromSeoul

    %25의 경우 예외처리를 하여 %2520등의 문제를 해결하였고,
    모든 Testcase에 답이 나오는데 어떤 부분에서 틀린지 알고싶습니다..
    왜 오답인지 알려주시면 감사하겠습니다.

    코드

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char str[80];
        char *enc;
        int C;
    
        scanf("%d", &C);
    
        for (int i = 0; i < C; i++) {
            scanf("%s", str);
    
            do {
                if (enc = strstr(str, "%20")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = ' ';
                }
    
                else if (enc = strstr(str, "%21")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = '!';
                }
    
                else if (enc = strstr(str, "%24")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = '$';
                }
    
                else if (enc = strstr(str, "%25")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = '#';
                }
    
                else if (enc = strstr(str, "%28")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = '(';
                }
    
                else if (enc = strstr(str, "%29")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = ')';
                }
    
                else if (enc = strstr(str, "%2a")) {
                    strcpy(enc + 1, enc + 3);
                    str[enc - str] = '*';
                }
            } while (enc != NULL);
    
            do {
                if (enc = strchr(str, '#'))
                    str[enc - str] = '%';
            } while (enc != NULL);
    
            printf("%s\n", str);
        }
    }
    

    7년 전
1개의 댓글이 있습니다.
  • Corea
    Corea

    해결하셨네요! strcpy에서 source와 destination은 겹치면 안되는 것으로 알고 있습니다..


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