이진수를 입력 받아서 원형회전하는 프로그램임 

예를들어 11001001 입력받아서 오른쪽으로 2비트 회전하면 01110010 으로 나오는걸 출력 받는거임.


근데 씨발 컴터가 2진수로 입력못받잖아 

그래서 문자열로 저장한다음에 

그걸 어떤 정수형 변수에 정수로 저장하고

그 변수를 비트이동 시키고, 다른변수새로 만들어서 반대방향으로 8-비트수 만큼 비트이동시키고

그걸 or 연산한다음에 변수에 넣고

그 변수를 또다시 십진수로 바꿔서 출력할려고햇는데


씨발 다짠거같은데 생각해보니까 문자열로 입력받으면 NULL문자도 입력되잖아 이거 어떻게처리해야되냐 이것만하면된다

코드첨부- 내 대가리가 이렇다




#include <stdio.h>

void calculate1(struct variables *p);

void calculate2(struct variables *p);


struct variables{

char ejin[8];

int rotate1,rotate2,a,b;

char answer[8];

};


int main(void)

{


struct variables *p;

printf("이진수를 8비트로 입력하시오: ");

scanf("%s", p->ejin);

printf("회전 비트수를 입력하시오: ");

scanf("%d",&p->rotate1);

printf("회전 방향을 입력하시오(왼쪽:-1, 오른쪽:1): ");

scanf("%d",&p->rotate2);

calculate1(p);

calculate2(p);

printf("원형 회전한 결과는 %s",p->answer);

}


void calculate1(struct variables *p)

{

int i, k=1;

for(i=7;i>=0;i--)

{

p->a=p->a+p->ejin[i]*k;

k=k*2;

}

if((p->rotate1)==-1)

{

p->a=(p->a<<(p->rotate1));

p->b=(p->a>>(8-(p->rotate1)));

    }

    

else

{

p->a=(p->a>>(p->rotate1));

    p->b=(p->a<<(8-(p->rotate1)));

}

p->b=p->b||p->a;

}



void calculate2(struct variables *p)

{

int i;

int k=1;

for(i=7;i>=0;i--)

{

k=k*2;

p->answer[i]=(p->b)/k;

}

}