0

我对并行编程很陌生。在我的 C 程序中,我需要在不同于主终端的终端上显示我的统计数据。

我是说:

我正在实现一个简单的文本编辑器。在用户编写数据时,我在线程的帮助下保持字母大小。我想随时显示字母大小,但是由于用户在打字时被打断,这是不可能的。因此,我正在考虑打开一个新的命令提示符窗口并在那里显示该字母大小信息。

我怎样才能做到这一点?我在 Ubuntu 中使用 g++ 编译器。

谢谢

4

1 回答 1

0

我认为您不需要生成新的外壳来显示该行。如果你想要的是评论框,试试这个(注意:我没有实现任何转义字符,所以退格和转义不起作用)

从这里得到了一点帮助什么是 Linux 中的 getch() 和 getche() 等价物?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 255
#ifdef _WIN32
#include <conio.h>
#else
#include <termios.h>

static struct termios old, newT;

/* Initialize new terminal i/o settings */
void initTermios(int echo)
{
    tcgetattr(0, &old); /* grab old terminal i/o settings */
    newT = old; /* make new settings same as old settings */
    newT.c_lflag &= ~ICANON; /* disable buffered i/o */
    newT.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
    tcsetattr(0, TCSANOW, &newT); /* use these new terminal i/o settings now */
}

/* Restore old terminal i/o settings */
void resetTermios(void)
{
    tcsetattr(0, TCSANOW, &old);
}

/* Read 1 character - echo defines echo mode */
char getch(int echo)
{
    char ch;
    initTermios(echo);
    ch = getchar();
    resetTermios();
  return ch;
}
#endif // _WIN32


int main()
{
    char arrayInput[MAXLEN + 1];
    static char printArray[MAXLEN + 15];
    static char tmp[5];
    char c;
    int i,len=0;
    printf("Begin\n");
    for(i=0;i<MAXLEN;i++)
    {
        putchar('\r');
        c = getch();
        for(len=0;len<MAXLEN;len++)
            putchar(' ');
        putchar('\r');
        arrayInput[i]=c;
        arrayInput[i+1] = '\0';
        strcpy(printArray,"");
        strcpy(printArray,arrayInput);
        strcat(printArray," Size is:: ");
        sprintf(tmp,"%d",i+1);
        strcat(printArray,tmp);
        printf("%s",printArray);
    }
    return 0;
}
于 2013-04-16T06:36:28.813 回答