URL 문제 질문드립니다.

  • hanminjo
    hanminjo

    c++로 작성한 코드입니다.

    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    
    using namespace std;
    void find_string_and_replace(char[], char[],char[]);
    int main(){
        int C;
        char URL[100][81] = { 0, };
        cin >> C;   //몇 줄 받을지 입력받음.
        if (C >= 1 && C <= 100){
            for (int i = 0; i < C; i++){
                cin >> URL[i];  //i 번째 URL입력받음
                if (strlen(URL[i]) > 81){
                    return 0;
                }
                else{   //함수 사용
                    find_string_and_replace(URL[i], "%20", " ");
                    find_string_and_replace(URL[i], "%21", "!");
                    find_string_and_replace(URL[i], "%24", "$");
                    find_string_and_replace(URL[i], "%25", "%");
                    find_string_and_replace(URL[i], "%28", "(");
                    find_string_and_replace(URL[i], "%29", ")");
                    find_string_and_replace(URL[i], "%2a", "*");
                }
                }
            for (int i = 0; i < C; i++){    //메모리에 저장해놓았다가 한번에 출력
                cout << URL[i] << endl;
            }
        }
    
        return 0;
    }
    
    //a에서 b를 strstr으로 찾아서 c[0]로 바꿔주고 뒷부분의 값을 땡겨주는 함수
    void find_string_and_replace(char a[81], char b[4],char c[2]){
        char* p=strstr(a,b);
        while (p != NULL){
            int i = 1;
            if (p == NULL){
                return;
            }
            *p = c[0];
    
            while (*(p + 2 + i) != '\0'){
                *(p + i) = *(p + 2 + i);
                i++;
            }
            *(p + i) = { 0, };
            p = strstr(p + 1, b);
    
        }
        return;
    }
    

    %2525나 %25%25 모두 결과 값은 이상없이 나오는데 오답인 이유를 모르겠습니다.


    8년 전
2개의 댓글이 있습니다.
  • seico75
    seico75

    %2528은 뭐가 나와야 할까요?


    8년 전 link
  • hanminjo
    hanminjo

    크 생각이 짧았네요 정말 감사합니다


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