删除换行符
Delete the newline symbol
我有一个计算器应用程序,它要求用户输入像 10 + 15
这样的算术表达式,在它后面加上一个 =
符号,然后按 Enter。程序应计算表达式并打印结果。
然而,答案在新的一行上,即使我希望它在同一条线上,例如
10 + 15 = 25
我也尝试使用 ungetch
,但没有成功。
那么如何删除那个换行符以获得上面的结果呢?
如果您正在从控制台读取一行输入,用户可以自由编辑他们输入的文本,直到他们按下 Enter
。当他们按下 Enter
时,光标会立即移动到行首,可能会在此过程中向上滚动屏幕缓冲区。
要将光标移回上一行,您需要使用一个 "curses" 库,该库允许您发送光标移动命令将光标移回上一行,然后移至他们的输入结束。如果他们在多行输入中使用制表符 and/or,这可能会很复杂。
参见 "ncurses" 或 Windows,PDCurses。
如果您使用的是终端,这并不容易,因为它通常在执行任何操作之前等待换行符。看看这里...
setvbuf not able to make stdin unbuffered
如果您在完全控制的套接字或其他流上执行此操作,则需要使用无缓冲输入。看这里
Buffered and Unbuffered inputs in C
请注意,这会使您的计算器更难编写。或者,您可以打印整行,即在终端中输入和回答。
如果您的终端支持它们,您可以使用终端转义码来移动光标。
#include <stdio.h>
int main ( ) {
char input[200] = "";
int ch = 0;
int count = 0;
printf ( "3[2J");//clear screen and move cursor to upper left corner
printf ( "3[8;H");//move cursor to line 8
printf("Enter equation\n");//\n advances to line 9
while ( ( ch = getchar ( )) != '\n' && ch != EOF) {
input[count] = ch;//store input for processing
count++;//count characters
}
printf ( "3[9;%dH", count + 1);//move cursor to row 9 col count + 1
printf ( "answer here\n");
return 0;
}
我有一个计算器应用程序,它要求用户输入像 10 + 15
这样的算术表达式,在它后面加上一个 =
符号,然后按 Enter。程序应计算表达式并打印结果。
然而,答案在新的一行上,即使我希望它在同一条线上,例如
10 + 15 = 25
我也尝试使用 ungetch
,但没有成功。
那么如何删除那个换行符以获得上面的结果呢?
如果您正在从控制台读取一行输入,用户可以自由编辑他们输入的文本,直到他们按下 Enter
。当他们按下 Enter
时,光标会立即移动到行首,可能会在此过程中向上滚动屏幕缓冲区。
要将光标移回上一行,您需要使用一个 "curses" 库,该库允许您发送光标移动命令将光标移回上一行,然后移至他们的输入结束。如果他们在多行输入中使用制表符 and/or,这可能会很复杂。
参见 "ncurses" 或 Windows,PDCurses。
如果您使用的是终端,这并不容易,因为它通常在执行任何操作之前等待换行符。看看这里...
setvbuf not able to make stdin unbuffered
如果您在完全控制的套接字或其他流上执行此操作,则需要使用无缓冲输入。看这里
Buffered and Unbuffered inputs in C
请注意,这会使您的计算器更难编写。或者,您可以打印整行,即在终端中输入和回答。
如果您的终端支持它们,您可以使用终端转义码来移动光标。
#include <stdio.h>
int main ( ) {
char input[200] = "";
int ch = 0;
int count = 0;
printf ( "3[2J");//clear screen and move cursor to upper left corner
printf ( "3[8;H");//move cursor to line 8
printf("Enter equation\n");//\n advances to line 9
while ( ( ch = getchar ( )) != '\n' && ch != EOF) {
input[count] = ch;//store input for processing
count++;//count characters
}
printf ( "3[9;%dH", count + 1);//move cursor to row 9 col count + 1
printf ( "answer here\n");
return 0;
}