2016-07-26 7 views
5
여기

아래의 코드왜 문자열 끝에 ' b'가 효과가 없습니까? 이 출력을 생성</p> <pre><code>#include <stdio.h> int main(int argc, char* argv[]) { printf("WORDbb WORDbb"); return 0; } </code></pre> <p>:

WO WORD 

마지막 \b이 더 구체적으로 그들이 마지막에있을 때 두 번째 단어에 영향을주지 않는 이유 질문은 문자열의?

+0

사용중인 OS와 단말기는 무엇입니까? – dbush

+5

'\ b'는 커서를 한 단계 뒤로 이동시키고 문자를 삭제하지 않기 때문입니다. 첫 번째 'WORD'에서 'R'과 'D'가 사라진 이유는 공간과 'W'로 덮어 쓰고 있기 때문입니다. – gurka

+1

''WORD \ b \ b WORD \ b \ b "'는 어떻게됩니까? 터미널이 커서를 뒤로 움직 였지만 문자는 지우지 않는다고 생각합니다. – Quentin

답변

4

영향을 미치지 만 영향을 받으면 커서가 뒤로 이동하지만 '\b'은 덮어 쓰기 전까지는 문자를 삭제하지 않습니다.

나중에 다른 것을 인쇄하려는 경우, 현재 커서 위치에서 인쇄가 재개됩니다.

참고 :이 동작은 텍스트를 표시하는 데 사용하는 터미널에 따라 다릅니다.

2

이것은 주로 사용중인 쉘/터미널 및 백 스페이스 문자를 해석하는 방법에 따라 다릅니다.

위에서 설명한 동작은 Windows의 명령 프롬프트에서 발생합니다. 이 터미널은 분명히 커서를 백 스페이스의 한 칸 뒤로 이동하지만 문자를 삭제하지는 않습니다. 백 스페이스 다음에 인쇄 된 문자는 이전에 기록 된 문자를 덮어 씁니다. 이 작업을 수행하는 경우 예를 들어

:

printf("WORD\b\b WORD\b\bx"); 

귀하의 출력은 다음과 같습니다 대조적으로

WO WOxD 

, 다음에 bash는 결과에 따라 우분투 시스템에서 코드를 실행 출력 :

WO WO