MISPELL, ENCRYPT문제에서 질문드립니다

  • dongjun.ko
    dongjun.ko

    왕초보 문제들중 초반 문제들은 문제없었는데
    MISPELL, ENCRYPT 이 두개는
    위의 코드처럼 한글자씩 바로바로 출력하면 정답이되고
    아래코드처럼 문자열에 저장해놨다가 한꺼번에 출력하면 계속 오답이라고 뜨네요 ㅠ
    아래 코드는 ENCRYPT코드고
    테스트할땐 둘다 결과는 똑같이뜨는데요..
    혹시 원래 이렇게 char문자열을 하나씩 출력해야 정답이라고 뜨는건가요?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAXLENGTH 105
    
    int main(){
        int testcaseCount;
        char input[MAXLENGTH] = { 0 };
        char output[MAXLENGTH] = { 0 };
        char buffer[MAXLENGTH];
        scanf("%d", &testcaseCount);
        while (testcaseCount--){
            scanf("%s", input);
    
    
            for (int i = 0; i < strlen(input); i += 2){
                printf("%c", input[i]);
            }
            for (int i = 1; i < strlen(input); i += 2){
                printf("%c", input[i]);
            }
            printf("\n");
        }
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAXLENGTH 105
    
    int main(){
        int testcaseCount;
        char input[MAXLENGTH] = { 0 };
        char output[MAXLENGTH] = { 0 };
        char buffer[MAXLENGTH];
        scanf("%d", &testcaseCount);
        while (testcaseCount--){
            int i,j,k;
            scanf("%s", input);
    
            for (i=0,j=0; i < strlen(input); i += 2, j++){
                output[j] = input[i];
            }
            for (j,k=1; j < strlen(input); j++,k+=2){
                output[j] = input[k];
            }
            printf("%s\n", output);
        }
    }
    

    9년 전
2개의 댓글이 있습니다.
  • Being
    Being

    C에서 문자열을 어떻게 다루시는지에 대한 이해가 부족하신 것 같습니다. C 스타일 문자열의 맨 끝에는 항상 '\0' 문자가 있어야 합니다.


    9년 전 link
  • dongjun.ko
    dongjun.ko

    답변 감사드립니다. 두번째 코드에서 output[strlen(input)] = '\0';
    을 추가하였더니 정답뜨네요!


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