如何在输入的同一行上打印输出?

Ahm*_*KCC 4 c input output

如何在与输入相同的行上打印?

这是我的代码

    #include <stdio.h>
    int main() {
       int number;
       printf("Enter number: ");
       scanf("%d", &number);
       printf("You entered: %d",number);
       return 0;
    }
Run Code Online (Sandbox Code Playgroud)

发生了什么: 发生了什么

     Enter number: 23
     You entered 23
Run Code Online (Sandbox Code Playgroud)

我想要达到的目标: 我想要达到的目标

     Enter number: 23 , You entered 23
Run Code Online (Sandbox Code Playgroud)

Adr*_*ica 5

使用“标准”输入例程(在 中定义的那些<stdio.h>,例如scanfgetchar)将等到您在处理输入之前点击“Enter”键 - 并且“Enter”将作为换行符回显(无法避免)。

但是您可以使用该getch()函数(在 中定义<conio.h>);这不会回显您输入的键/字符,因此,当您按“Enter”键时,换行符不会在控制台上“反映”。但是,您必须手动回显您键入的任何其他字符,并将它们保存到输入缓冲区;然后您可以使用该sscanf函数从该缓冲区读取您的整数。

这是一个简短的示例,可以满足您的要求:

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

int main()
{
    char buffer[256] = ""; // Space for our input string
    printf("Enter number: ");
    int in;
    while ((in = getch()) != '\r') { // Read until we see the "Enter" key ...
        char out = (char)(in);
        printf("%c", out); // We need to manually "echo" the input character...
        buffer[strlen(buffer)] = out; // ... and add that to our input buffer
        if (strlen(buffer) == 255) break; // Prevent buffer overflow!
    }
    int number;
    sscanf(buffer, "%d", &number); // Read number from buffer ...
    printf(" , You entered: %d", number); // ... and print it (on the same line)
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

注意:您可以(应该)向此代码添加更多错误检查(例如检查 的返回值scanf以确保给出有效整数);但是,我所展示的“模拟”了您的原始代码,但没有回显换行符。