如何在与输入相同的行上打印?
这是我的代码
#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)
使用“标准”输入例程(在 中定义的那些<stdio.h>,例如scanf和getchar)将等到您在处理输入之前点击“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以确保给出有效整数);但是,我所展示的“模拟”了您的原始代码,但没有回显换行符。