2011-08-24 9 views
5

에서 gotoxy()를 얻을 수있는 방법, 나는 컴파일하고 터미널에서 실행합니다. 그러나 온라인 프로그래밍 콘테스트에서는 다이어그램과 같은 출력이 필요합니다. 이를 위해 내가 .so를 <strong>우분투</strong>에 <strong>GCC</strong>를 사용하고 GCC

required output

, 나는 TURBOC를 사용하는 경우 나는 그것이 출력의 나선형 형식를 얻을 수 gotoxy()를 사용 conio.h와 사용하여 얻을 수 있습니다. 하지만 우분투에서 어떻게 이걸 얻을 수 있습니까?

+3

난 당신이, (숫자, 즉 순서로 각 숫자가가는 시간을 미리 파악하기로 왼쪽에서 오른쪽으로 생각 사용 -bottom 및 사이의 공백 수)를 입력 한 다음 모든 텍스트를 출력하면됩니다. "화면에서이 위치로 이동하여 번호를 쓰는 것만으로도 ** 재미있는 질문이 아닙니다 **; 프로그래밍 경연 대회는 근본적으로 디자인이 아니라 구현에 관한 것입니다. –

답변

4

ncurses 라이브러리를 사용하십시오.

여기 http://www.paulgriffiths.net/program/c/srcs/curhellosrc.html

#include <stdlib.h> 
#include <stdio.h> 
#include <curses.h> 

int main(void) { 
    WINDOW * mainwin; 

    /* Initialize ncurses */ 

    if ((mainwin = initscr()) == NULL) { 
     fprintf(stderr, "Error initialising ncurses.\n"); 
     exit(EXIT_FAILURE); 
    } 

    move(10, 15); 
    addch('X'); 
    refresh(); 

    getch(); 

    delwin(mainwin); 
    endwin(); 
    refresh(); 

    return EXIT_SUCCESS; 
} 

추가 정보에서 적응, 예제가 여기에 있습니다 : http://invisible-island.net/ncurses/ncurses-intro.html#stdscr

1

ANSI escape sequences의 제외하고는 ncurses를 조사 할 수 있습니다

http://www.gnu.org/s/ncurses/

이 모든 것은 궁극적으로 프로그램이 아닌 실제 호스트, 언어 또는 라이브러리를 실행하는 터미널의 기능에 따라 달라집니다. 프로그램 출력을 파일이나 프린터로 재지 정하는 작업을 고려하십시오.

conio.h API는 고정 콘솔과 관련이 있습니다. Unix 계열 시스템에서는 크기 조정이 가능한 X- 터미널과 같이 다양하게 구성 할 수있는 터미널을 사용합니다.

1

는 당신이 필요로 얼마나 많은 출력의 라인을 결정합니다. "char *"의 배열을 필요한 출력 줄 당 하나의 항목으로 할당하십시오. 숫자를 배치 할 때 "realloc()"을 사용하여 줄의 크기를 늘리고 필요에 따라 이전 끝에서 새 끝까지 공백을 채 웁니다. 그 번호를 해당 행의 적절한 위치에 놓으십시오 (메모리에 있음).

메모리에 문자열 배열을 작성한 후; 각 줄을 인쇄하고 할당 한 메모리를 해제하는 for 루프를 수행하십시오.

커서 위치를 제어하기 위해 "gotoxy()"또는 기타 항목이 필요하지 않습니다.

5

콘테스트이기 때문에 ncurses와 같은 종속성을 원하지 않는다고 가정하면 메모리에서 할 수 있습니다.

문자 및 열의 2 차원 배열을 설정합니다. 예를 들어 24x80입니다. 적절한 셀에 값을 할당하는 자신의 버전 gotoxy()을 작성하십시오. 플로팅이 끝나면 선의 배열을 출력합니다.

0

아직 여기에 없으므로 ANSI 이스케이프 시퀀스를 사용하는 예제에 대해서는 Steve-o으로 언급하고 싶습니다.

void gotoxy(int x, int y) 
{ 
    printf("%c[%d;%df", 0x1B, y, x); 
} 

나는 그것을 here에서 받았다.

0x1B은 십진수로 27에 대해 16 진수이며 ESC에 대한 ASCII입니다.이스케이프 시퀀스는 함께 시작합니다.

%m;%nf 커서를 행 n, 열 m으로 이동합니다.

는 ANSI 이스케이프 시퀀스
은 최고에, "to control the formatting, color, and other output options on video text terminals는"

관련 문제