C 프로그래밍 언어, 1 판, 연습 1-8 --- 화살표를 표시 할 수 없습니다.

Yusif_Nurizade

Kernighan과 Ritchie의 The C Programming Language를 살펴보고 있으며 연습 중 하나에 문제가 있습니다. 나는 초판과 연습 1-8을 사용하고 있다고 생각합니다.

각 탭을 세 문자 시퀀스>, 백 스페이스,-(오른쪽 방향 화살표)로 인쇄하고 각 백 스페이스를 유사한 시퀀스 (왼쪽 방향 화살표)로 바꾸는 프로그램을 작성하십시오. 이렇게하면 탭과 백 스페이스가 표시됩니다. 내 코드는 다음과 같습니다.

#include<stdio.h>

int c;

main(){
    while((c = getchar()) != EOF){
        if(c == '\t'){
            putchar('>');
            putchar('\b');
            putchar('-');
        }
        else if(c == '\b'){
            putchar('<');
            putchar('\b');
            putchar('-');
        }
        else
            putchar(c);
        }
    }

MinGW 컴파일러를 사용하고 있으며 코드를 실행하면 화살표가없는 대시가 많이 표시됩니다. 또한 <또는>도 전혀 표시되지 않습니다. 이 연습 문제에 대한 다른 사람들의 해결책을 찾아 보았지만 내가 찾은 것은이 책의 두 번째 버전이며 해당 연습 문제에서는 탭을 세는 것입니다. 마지막으로 세 개의 putchar ()로 코드를 실행하여 화살표가 효과가 없도록했습니다. 나는 다시 같은 대시를 얻습니다.

누구든지 이것에 대해 밝힐 수 있습니까?

너에게 듣기를 바래,

유 시프 누리 자데

키스 톰슨

기본적인 문제는 프로그램이 구식 시스템 용으로 작성되었다는 것입니다.

일반적인 입력 설정을 사용하여 일반적인 시스템에서 해당 프로그램을 실행하면 프로그램에 백 스페이스 문자가 표시되지 않습니다.

예를 들어, Unix 계열 시스템에서 표준 입력 ( stdin)은 일반적으로 한 번에 한 줄씩 처리됩니다. 한 번에 문자를 읽는 프로그램은 내부 버퍼에서 읽습니다. 백 스페이스를 입력하면 백 스페이스 문자를 프로그램에 보내지 않습니다. 실제로 내부 버퍼에서 이전 문자를 제거합니다.

예를 들어 "abcx Backspacedef" 를 입력 하면 프로그램에 "abcdef"만 표시됩니다.

Unix와 유사한 시스템을 사용하는 경우 리터럴 백 스페이스 앞에 Ctrl-V. 그리고 Backspace키보드 키는에 매핑 될 수 있습니다 Delete. 그렇다면 Ctrl-VCtrl-H리터럴 백 스페이스 문자를 보내십시오.

(유닉스 계열 시스템이 아니라면 비슷한 작업을 수행 할 수있는 방법이있을 수 있지만 그게 뭔지 모르겠습니다.)

그러나 Michael Walz의 답변이 지적했듯이 프로그램이 사용하는 오버 스트라이크 (인쇄> 백 스페이스-오른쪽 화살표 인쇄)는 하드 카피 터미널에서만 작동합니다. 최신 디스플레이 터미널에서 백 스페이스는 단순히 이전 문자를 지 웁니다.

그리고 제가 코멘트에서 썼던 것을 되풀이합니다. 1978 년에 출판 된 Kernighan & Ritchie (K & R1)의 초판은 진정 고전이지만 C 언어의 오래된 사전 표준 버전을 설명합니다. 출판 이후 가장 큰 변화 는 인자의 유형을 지정하는 함수 선언 프로토 타입 의 추가 일 것입니다 . 그들은 1978 년에 존재하지 않았지만 현대 C 코드에서 프로토 타입을 사용하지 않는 것은 매우 나쁜 습관입니다. 두 번째 버전의 사본을 얻을 수 있다면 그렇게하십시오. Kindle과 Nook는 물론 죽은 나무에서도 사용할 수 있습니다. (1989 년에 출판 된 두 번째 판조차도 다소 구식이지만 여전히 C를 배울 수 있습니다. 좋은 C89 / C90 코드는 일반적으로 여전히 좋은 C99 및 C11 코드입니다.)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C 프로그래밍 언어, 연습 1-9의 솔루션을 1-12와 비교할 때 혼동

분류에서Dev

C 프로그래밍 언어 연습 2-4 : 답을 이해할 수 없습니다.

분류에서Dev

C 프로그래밍 언어, Ch.1 연습 1.10 (Getchar 및 Putchar)

분류에서Dev

C 프로그래밍 언어 (K & R)에 대한 질문-연습 1-13

분류에서Dev

C 프로그래밍 언어에서 예제 프로그램을 컴파일 할 수 없습니다.

분류에서Dev

AppDelegate에서 프로그래밍 방식으로 viewContoller를 탭 표시 줄에 추가 할 수 없습니다.

분류에서Dev

Windows 10 표시 언어를 변경할 수 없습니다.

분류에서Dev

서버가 c winsock 프로그래밍에서 클라이언트 메시지를받을 수 없습니다.

분류에서Dev

프로그래밍 언어로 생성 된 JWT를 다른 프로그래밍 언어에서 사용할 수 있습니까?

분류에서Dev

로그인시 언어를 변경할 수 없습니다.

분류에서Dev

K & R 연습 1-18 (C 프로그래밍 언어)의 예기치 않은 출력

분류에서Dev

C ++ 빌더 2010에서 프로그램을 실행할 수없고 오류 5와 경고 1이 표시되었습니다.

분류에서Dev

프로그래밍 언어로 어떻게 다중 처리를 수행 할 수 있습니까?

분류에서Dev

화살표 키로 JLabel을 이동할 수 없습니다.

분류에서Dev

Bluetooth 액세스 프롬프트가 프로그래밍 방식으로 표시되는시기를 제어 할 수 있습니까 (예 : 위치)?

분류에서Dev

php, javascript 또는 다른 프로그래밍 언어를 사용하여 클라이언트 컴퓨터에 약 1MB의 데이터를 저장할 수 있습니까?

분류에서Dev

php, javascript 또는 다른 프로그래밍 언어를 사용하여 클라이언트 컴퓨터에 약 1MB의 데이터를 저장할 수 있습니까?

분류에서Dev

내 웹 사이트에서 다른 언어로 텍스트를 표시 할 수 없습니다.

분류에서Dev

C 프로그래밍 언어의 하위 기능에서 주 기능의 시작으로 어떻게 이동할 수 있습니까?

분류에서Dev

0 ^ n1 ^ n 언어를 정규 문법으로 표현할 수 있습니까?

분류에서Dev

파이썬 3 프로그래밍에서 포맷하는 동안 1e-5를 제거 할 수 없습니다.

분류에서Dev

연락처 그룹을 iOS에 표시 할 수 없습니다.

분류에서Dev

K & R 연습 1-9 솔루션 C 프로그래밍

분류에서Dev

아마존 웹 사이트에 "국가로 배송"이 표시됩니다. 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

분류에서Dev

어셈블리 프로그래밍 _printf에 al 레지스터를 인수로 제공 할 수 없습니다.

분류에서Dev

ArangoDB, 그래프를 어떻게 표시 할 수 있습니까?

분류에서Dev

VGA에서 Nvidia 카드로 전환 할 수 없습니다. '오류 : BrokenCount> 0'이 표시되고 libvdpau1 파일을 업데이트 할 수 없습니다.

분류에서Dev

vala 프로그래밍 언어를 사용하여 다른 응용 프로그램이 전체 화면인지 최대화되었는지 감지하고 자체 프로그램을 일시 중단 할 수 있습니까?

분류에서Dev

화살표 함수에서 useState 후크를 호출 할 수 없습니다.

Related 관련 기사

  1. 1

    C 프로그래밍 언어, 연습 1-9의 솔루션을 1-12와 비교할 때 혼동

  2. 2

    C 프로그래밍 언어 연습 2-4 : 답을 이해할 수 없습니다.

  3. 3

    C 프로그래밍 언어, Ch.1 연습 1.10 (Getchar 및 Putchar)

  4. 4

    C 프로그래밍 언어 (K & R)에 대한 질문-연습 1-13

  5. 5

    C 프로그래밍 언어에서 예제 프로그램을 컴파일 할 수 없습니다.

  6. 6

    AppDelegate에서 프로그래밍 방식으로 viewContoller를 탭 표시 줄에 추가 할 수 없습니다.

  7. 7

    Windows 10 표시 언어를 변경할 수 없습니다.

  8. 8

    서버가 c winsock 프로그래밍에서 클라이언트 메시지를받을 수 없습니다.

  9. 9

    프로그래밍 언어로 생성 된 JWT를 다른 프로그래밍 언어에서 사용할 수 있습니까?

  10. 10

    로그인시 언어를 변경할 수 없습니다.

  11. 11

    K & R 연습 1-18 (C 프로그래밍 언어)의 예기치 않은 출력

  12. 12

    C ++ 빌더 2010에서 프로그램을 실행할 수없고 오류 5와 경고 1이 표시되었습니다.

  13. 13

    프로그래밍 언어로 어떻게 다중 처리를 수행 할 수 있습니까?

  14. 14

    화살표 키로 JLabel을 이동할 수 없습니다.

  15. 15

    Bluetooth 액세스 프롬프트가 프로그래밍 방식으로 표시되는시기를 제어 할 수 있습니까 (예 : 위치)?

  16. 16

    php, javascript 또는 다른 프로그래밍 언어를 사용하여 클라이언트 컴퓨터에 약 1MB의 데이터를 저장할 수 있습니까?

  17. 17

    php, javascript 또는 다른 프로그래밍 언어를 사용하여 클라이언트 컴퓨터에 약 1MB의 데이터를 저장할 수 있습니까?

  18. 18

    내 웹 사이트에서 다른 언어로 텍스트를 표시 할 수 없습니다.

  19. 19

    C 프로그래밍 언어의 하위 기능에서 주 기능의 시작으로 어떻게 이동할 수 있습니까?

  20. 20

    0 ^ n1 ^ n 언어를 정규 문법으로 표현할 수 있습니까?

  21. 21

    파이썬 3 프로그래밍에서 포맷하는 동안 1e-5를 제거 할 수 없습니다.

  22. 22

    연락처 그룹을 iOS에 표시 할 수 없습니다.

  23. 23

    K & R 연습 1-9 솔루션 C 프로그래밍

  24. 24

    아마존 웹 사이트에 "국가로 배송"이 표시됩니다. 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

  25. 25

    어셈블리 프로그래밍 _printf에 al 레지스터를 인수로 제공 할 수 없습니다.

  26. 26

    ArangoDB, 그래프를 어떻게 표시 할 수 있습니까?

  27. 27

    VGA에서 Nvidia 카드로 전환 할 수 없습니다. '오류 : BrokenCount> 0'이 표시되고 libvdpau1 파일을 업데이트 할 수 없습니다.

  28. 28

    vala 프로그래밍 언어를 사용하여 다른 응용 프로그램이 전체 화면인지 최대화되었는지 감지하고 자체 프로그램을 일시 중단 할 수 있습니까?

  29. 29

    화살표 함수에서 useState 후크를 호출 할 수 없습니다.

뜨겁다태그

보관