2014-10-02 4 views
0

온라인 온라인으로 기본적인 프로그래밍 문제를 수행하고 있습니다. 기본적으로 내가 (콘솔에서) 입력으로 취해야 할바이너리 계산기 C의 한 자리 수를 읽는 방법은 무엇입니까?

00000100+10000001 

말을하고 내가 바이너리 변환하는 데 사용할 수있는 알고리즘을 발견 오른쪽 출력

00000011 

을 생산하는 것 10 진수와 10 진수를 2 진수로 변환합니다. 나는 그 부분에 도움이 필요하지 않습니다. 이 문제는 배열 (문자열 포함)을 사용해서는 안됩니다. 내가 생각한 것은 한 번에 한 자릿수의 사용자 입력을받은 다음 각 자릿수를 처리하는 것이 었습니다. 나는

scanf("%d",&i) 

를 사용할 때마다 그러나, 입력은 항상 내가 일치하는 입력 및 출력에 대한 위해 방지 할 새로운 라인으로 진행된다. 누구든지 다음 줄로 이동하지 않고 사용자로부터 한 자릿수를 가져 오는 방법을 알고 있습니까?

+1

['getc'] (http://linux.die.net/man/3/getc)를 확인 했습니까? – SleuthEye

답변

1

문제를 제대로 이해하고 있다면 배열 (따라서 문자 배열 은 문자 배열)이 금지되지만 문자 I/O는 일반적으로 그렇지 않을 수 있습니다? 이 경우 getc()을 사용하여 한 번에 한 문자 씩 읽고 처리 할 수 ​​있습니다.

1

검색 범위를 제한하십시오.

if (scanf("%1d",&i) != 1) 
    Handle_Failure(); // This is likely the '+' in stdin. 

일반적으로 stdin은 라인 버퍼입니다. 사용자가 회선을 완료 할 때까지 scanf(), getc() 등의 입력이 표시되지 않습니다.


대신 사용자의 입력 행을 읽고 버퍼를 처리하는 것이 좋습니다. 필요하다면 한번에 공정 1 char.

char buf[1000]; 
if (fgets(buf, sizeof buf, stdin) == NULL) Handle_IOError_or_EOF(); 

char *s = buf; 
while (*s) { 
    Parse_Buffer(); 
    s++; 
} 
Do_Stuff(); 
+0

op는 배열을 허용하지 않습니다. 그래서이 코드 예제는 받아 들일 수 없다. – user3629249

관련 문제