2016-03-01 39 views
1

新的C.试图让它与Eclipse一起工作,因为它似乎更容易使用,然后vi(格式化,语法警告编译之前等)。Eclipse的打印符号代替了控制台上的'chars'C

现在我的程序在终端中工作正常,但在Eclipse控制台中它似乎不能很好地工作。

我发现了错误的来源,但我需要一些帮助修复它。 由于某种原因,Eclipse控制台不喜欢重新定位光标以在现有文本上打印(或者看起来似乎如此)。因为当我使用printf(...)定期打印时,打印效果很好。

我正在使用这些函数重新打印并且Eclipse控制台不喜欢它。我第一次重新定位光标,set_cur_pos(..),然后在for循环中调用的put(..)

// 
// Name: put 
// Description: calls putchar to place a character, then flushes stdout 
// @param character - character to print onto console 
void put(char character) { 
    putchar(character); 
    fflush(stdout); 
} // clear 

// 
// Name: set_cur_pos 
// Description - sets cursor at a specific location on console 
// @param rCursor - row location to place cursor 
// @param cCursor - col location to place cursor 
// 
void set_cur_pos(int rCursor, int cCursor) { 
    printf("\033[%d;%dH", rCursor, cCursor); 
} // set_cur_pos 

EG转载现有文本的顶部我的人物:我会使用它像这样

/** 

* Description: Function prints a grid using cursor control. 
*/ 
static void printOver(char grid[40][40]) { 

    int i, j; 
    for (i = 0; i < size; i++) { 

     for (j = 0; j < size; j++) { 
      set_cur_pos(i, j); 
      put(grid[i][j]); 
     } 
    } 

任何想法为什么Eclipse打印出来?

[2J[0;0H [0;1H*[0;2H [0;3H [0;4H [0;5HY[0;6H*[0;7H [0;8H [0;9H [1;0H [1;1H [1;2H [1;3H [1;4H [1;5HY[1;6H [1;7H [1;8H [1;9H*[2;0H [2;1H [2;2H*[2;3H [2;4H*[2;5HY[2;6H [2;7HY[2;8H [2;9H [3;0H [3;1H [3;2H [3;3H [3;4HY[3;5HY[3;6H [3;7H [3;8H [3;9H [4;0H*[4;1H [4;2H [4;3H [4;4HY[4;5H [4;6H [4;7H [4;8H [4;9H [5;0H*[5;1HY[5;2H [5;3H [5;4H [5;5H [5;6H [5;7H [5;8H*[5;9H [6;0HY[6;1HY[6;2H [6;3H [6;4H [6;5HY[6;6HY[6;7H*[6;8H [6;9H [7;0H [7;1HY[7;2H [7;3HY[7;4H [7;5H [7;6HY[7;7H [7;8H [7;9H*[8;0HY[8;1HY[8;2H [8;3H [8;4H [8;5H [8;6H [8;7H*[8;8H [8;9H [9;0H [9;1H [9;2H [9;3HY[9;4H [9;5H*[9;6H [9;7H [9;8H [9;9H [10;0H 
[0;0H [0;1H_[0;2H [0;3H [0;4H [0;5HY[0;6H_[0;7H [0;8H [0;9H [1;0H [1;1H [1;2H [1;3H [1;4H [1;5HY[1;6H [1;7H [1;8H [1;9H*[2;0H [2;1H [2;2H*[2;3H [2;4H*[2;5HY[2;6H [2;7H*[2;8H [2;9H [3;0H [3;1H [3;2H [3;3H [3;4HY[3;5H*[3;6H [3;7H [3;8H [3;9H [4;0H*[4;1H [4;2H [4;3H [4;4HY[4;5H [4;6H [4;7H [4;8H [4;9H [5;0H*[5;1HY[5;2H [5;3H [5;4H [5;5H [5;6H [5;7H [5;8H*[5;9H [6;0HY[6;1H*[6;2H [6;3H [6;4H [6;5HY[6;6H*[6;7H_[6;8H [6;9H [7;0H [7;1HY[7;2H [7;3HY[7;4H [7;5H [7;6HY[7;7H [7;8H [7;9H_[8;0HY[8;1HY[8;2H [8;3H [8;4H [8;5H [8;6H [8;7H_[8;8H [8;9H [9;0H [9;1H [9;2H [9;3HY[9;4H [9;5H*[9;6H [9;7H [9;8H [9;9H [10;0H 
+3

我猜是因为Eclipse不支持VT100转义序列并选择忽略ESC。 – MikeCAT

+1

这是@MikeCAT猜测; Eclipse不是终端模拟器,它不适合测试需要它的环境。 – mah

+0

注意:由于您的评论似乎使用了一些文档标准,您最好看看Doxygen。这样可以避免冗余(例如,在评论中修改记录的功能的名称)并生成相当整洁的输出。 – Olaf

回答

0

这些\ 033 [...转义序列不是终端可移植的,例如,在bash和cmd之间。 所以我认为Eclipse IDE控制台不会将它们解释为游标集命令。 不使用PAL的单个便携式光标命令是'\ r',它会将光标设置为 到行首。