c-删除换行符



我有一个计算器应用程序,它询问用户输入一个算术表达式,如10 + 15,后面加一个=符号,然后按Enter。程序应该计算表达式并打印结果。

然而,答案在一条新的线上,尽管我希望它像一样在同一条线上

10 + 15 = 25

我也尝试过使用ungetch,但没有成功。

那么,我如何删除换行符以获得较高的结果呢?

如果您的终端支持它们,您可以使用终端转义码来移动光标。

#include <stdio.h>
int main ( ) {
    char input[200] = "";
    int ch = 0;
    int count = 0;
    printf ( "33[2J");//clear screen and move cursor to upper left corner
    printf ( "33[8;H");//move cursor to line 8
    printf("Enter equationn");//n advances to line 9
    while ( ( ch = getchar ( )) != 'n' && ch != EOF) {
        input[count] = ch;//store input for processing
        count++;//count characters
    }
    printf ( "33[9;%dH", count + 1);//move cursor to row 9 col count + 1
    printf ( "answer heren");
    return 0;
}

如果您正在从控制台读取一行输入,用户可以自由编辑他们键入的文本,直到他们按下Enter。当他们按下Enter时,光标会立即移动到行的开头,可能会在这个过程中向上滚动屏幕缓冲区。

要将光标移回前一行,您需要使用一个"curses"库,该库允许您发送光标移动命令,将光标移回到前一行并移动到其输入的末尾。如果他们使用制表符和/或在多行输入中键入,这可能会很复杂。

请参阅"ncurses",或者在Windows上,参见PDCurses。

如果您使用的是终端,这并不容易,因为它通常在执行任何操作之前都要等待换行符。看看这里。。。

setvbuf无法使stdin成为无缓冲的

如果您在一个套接字或其他完全可以控制的流上执行此操作,那么您需要使用无缓冲的输入。看看这里

C 中的缓冲和未缓冲输入

注意,这会让你的计算器更难写。或者,你可以打印整行,即在终端中输入和回答。

相关内容

  • 没有找到相关文章

最新更新