c - 删除换行符

标签 c io newline user-input

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

但是,答案位于新行,即使我希望它位于同一行,例如

10 + 15 = 25

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

那么如何删除换行符以获得上面的结果呢?

最佳答案

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

#include <stdio.h>

int main ( ) {
    char input[200] = "";
    int ch = 0;
    int count = 0;

    printf ( "\033[2J");//clear screen and move cursor to upper left corner
    printf ( "\033[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 ( "\033[9;%dH", count + 1);//move cursor to row 9 col count + 1
    printf ( "answer here\n");
    return 0;
}

关于c - 删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36290603/

相关文章:

c - 线程退出后是否可以取消分配C __thread线程本地内存?

c++ - 如何从 ASCII 文件中读取数字 (C++)

java - System.in 是InputStream 类的对象引用吗?

bash - BASH while 循环中的 echo/printf 中没有换行符

bash - 如何将备用行合并到每个后续列?

c++ - C和C++中的指针操作

c - fork 一个进程似乎吃掉了某些代码行 - Objective-C

c - 以二进制形式打开图像文件,将图像存储为字节字符串,保存图像 - 可以用纯 C 语言吗?

c - 使用 %*c 清除 scanf 缓冲区的危险

regex - 将文本文件转换为单行