gaelim   4년 전

문자열을 체크해 2진수를 3자리수 씩 끊어서 8진수에 넣어줬습니다. 비록 조건문에서 배열 안이 마이너스가 되긴하지만. 로컬에서는 별문제 없이 돌아갑니다. 질문에 있는 예외사항도 넣어보았으나.. 잘작동됩니다.  어떤것이 잘못되었는지 모르겠습니다...



#include <stdio.h>

char bin[1000001];
char oct[1000001];
int main(){

  int i;
  scanf("%s", bin);
  for(i=0;i<1000001;i++) if(bin[i]=='\0') break;
  int len=i;
  int j=0;

  for(i=len-1;i>=0;i-=3){

    if(i>=2 && bin[i-2] && bin[i-1] && bin[i])
      oct[j++]= 4*(bin[i-2]-'0')+2*(bin[i-1]-'0')+bin[i];
    else if (i==1 && bin[i-1] && bin[i])
      oct[j++] = 2*(bin[i-1]-'0')+bin[i];
    else if (i==0)
      oct[j++] = bin[i];
  }

  for(i=j; i>=0; i--)
    printf("%c", oct[i]);
  printf("\n");

  return 0;
}

kjp4155   4년 전

제가 테스트 해 본 결과 맨 앞에 널문자가 하나 출력되는 것 같네요.

확인해보시길 바랍니다.

Screen Shot 2017-08-19 at 9.58.15 PM.png

gaelim   4년 전

kjp4155님 감사합니다........ㅠ.ㅠ.ㅠ.ㅠ.ㅠ.ㅠ.ㅠ. i=j-1 하구 해결했습니다

댓글을 작성하려면 로그인해야 합니다.