c语言的输入输出问题

如何才能让每一次的输入与输出在同一行?
示例:
(输入)1 2(输出)3

1 2     3
1 10   13
1 3     4

不要用流输入, 用即时性输入函数
windows

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

char chrArr[32];

int main()
{
    int i = 0;
    while ((chrArr[i] = getch()) && (chrArr[i] != '\r'))
    {
        ++i;
    }
    char *num;
    int lhs = strtol(chrArr, &num, 10);
    int rhs = atoi(num);

    printf("%d %d %d", lhs, rhs, lhs + rhs);
}


linux

#include <stdio.h>
#include <stdlib.h>
#include <termio.h>
#include <stdbool.h>

int getch(void)
{
    return getchar();
}

void setio(bool bl)
{
    static struct termios tm, tm_old;
    if (bl)
    {
        tcgetattr(0, &tm);

        tm_old = tm;
        cfmakeraw(&tm); // 更改终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理
        tcsetattr(0, TCSANOW, &tm);
    }
    else
    {
        tcsetattr(0, TCSANOW, &tm_old);
    }
}

char chrArr[32];

int main()
{
    setio(true);
    int i = 0;
    while ((chrArr[i] = getch()) && (chrArr[i] != '\r'))
    {
        ++i;
    }
    setio(false);
    char *num;
    int lhs = strtol(chrArr, &num, 10);
    int rhs = atoi(num);

    printf("%d %d %d\n", lhs, rhs, lhs + rhs);
}


当你结束输入时按下了回车,这时候就换行了。试试约定另一个字符作为输入结束的标志,读到这个标志就结束输入,然后计算、输出。
试试这个,输入时不回显,输入第二个空格后一次输出结果:

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#define M 10
char a1[M];
char a2[M];

char getch()
{
    char buf = 0;
    struct termios old = {0};
    fflush(stdout);

    if (tcgetattr(0, &old) < 0)
        perror("tcsetattr()");
    old.c_lflag &= ~ICANON;
    old.c_lflag &= ~ECHO;
    old.c_cc[VMIN] = 1;
    old.c_cc[VTIME] = 0;

    if (tcsetattr(0, TCSANOW, &old) < 0)
        perror("tcsetattr ICANON");
    if (read(0, &buf, 1) < 0)
        perror("read()");

    old.c_lflag |= ICANON;
    old.c_lflag |= ECHO;

    if (tcsetattr(0, TCSADRAIN, &old) < 0)
        perror("tcsetattr ~ICANON");

    return buf;
}

int main() {
    int i = 0;
    while (i < M) {
        a1[i] = getch();
        if (a1[i] == ' ')
            break;
        i++;
    }
    i = 0;
    while (i < M) {
        a2[i] = getch();
        if (a2[i] == ' ')
            break;
        i++;
    }

    int i1 = atoi(a1);
    int i2 = atoi(a2);
    int r = i1 + i2;

    printf("%d %d %d", i1, i2, r);
}

如:
12 34 46