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

我的意思是:

我正在实现一个简单的文本编辑器。 用户写数据时,我借助线程保持字母大小。 我想随时显示字母大小,但是由于用户在键入时被打断而无法显示。 因此,我正在考虑打开一个新的命令提示符窗口,并在其中显示该字母大小信息。

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

谢谢

===============>>#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;
}

  ask by skynyrd translate from so

未解决问题?本站智能推荐: