URI에 관해 질문 드립니다. 소스 첨부

  • mihaly
    mihaly
    #include <stdio.h>
    
    int main()
    {
        int T, i;
        char answer[81];
        int ans_idx;
        char ch;
    
        scanf("%d", &T);
    
        while(T--) {
            fflush(stdin);
            ans_idx = 0;
    
            scanf("%c", &ch);
            while(ch != '\n' && ch != '\0') {
                if(ch != '%') {
                    answer[ans_idx++] = ch;
                }else {
                    scanf("%c", &ch);
    
                    if(ch != '2') {
                        answer[ans_idx++] = '%';
                        answer[ans_idx++] = ch;
                    }else {
                        scanf("%c", &ch);
                        switch(ch) {
                            case '0':
                                answer[ans_idx++] = ' ';
                                break;
                            case '1':
                                answer[ans_idx++] = '!';
                                break;
                            case '4':
                                answer[ans_idx++] = '$';
                                break;
                            case '5':
                                answer[ans_idx++] = '%';
                                break;
                            case '8':
                                answer[ans_idx++] = '(';
                                break;
                            case '9':
                                answer[ans_idx++] = ')';
                                break;
                            case 'a':
                                answer[ans_idx++] = '*';
                                break;
                            default:
                                answer[ans_idx++] = '%';
                                answer[ans_idx++] = '2';
                                answer[ans_idx++] = ch;
                                break;
                        }
                    }
                }
    
                scanf("%c", &ch);
            }
    
            answer[ans_idx] = '\0';
            printf("%s\n", answer);
        }
    
        return 0;
    }
    

    이게 계속 오답이라고 떠서 문자를 하나씩 안 받고
    str이라는 문자열에 그냥 scanf("%s", str)로 담아와서
    같은 방법으로 구현을 했는데요.
    문자열을 한번에 받아와서 할 때는 정답이라고 떴는데
    문자 하나씩 받을 때는 왜 오답이라 뜨는지 잘 모르겠습니다.

    조언 부탁드립니다~

    감사합니다.


    11년 전
2개의 댓글이 있습니다.
  • 강원
    강원

    http://algospot.com/static/contest/guide.pdf 를 한 번 읽어보세요. :)
    "fflush의 입력 파일에 대한 동작은 표준에서 정의되지 않은 것일 뿐더러, 설령 기대대로 버퍼를 비우는 동작을 한다고 하면 채점용 테스트 데이터 파일에서 일정 단위로 읽어 채운 버퍼를 비워 버리게 되며, 이 경우 프로그램이 어떻게 동작할지는 전혀 알 수 없게 됩니다. 따라서 절대 사용해서는 안 되며, 행 끝의 줄 바꿈 문자 등이 문제가 되는 경우 다른 방법으로 잘 처리해야 합니다."


    11년 전 link
  • mihaly
    mihaly

    아하 감사합니다.
    매뉴얼을 꼼꼼히 읽어봐야겠어요.


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