gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:41:43 25 4
gpt4 key购买 nike

如何在与输入相同的行上打印?
这是我的代码

    #include <stdio.h>
int main() {
int number;
printf("Enter number: ");
scanf("%d", &number);
printf("You entered: %d",number);
return 0;
}
发生了什么:
What happening
     Enter number: 23
You entered 23
我想要达到的目标:
What i want to achieve
     Enter number: 23 , You entered 23

最佳答案

使用“标准”输入例程(在 <stdio.h> 中定义的那些例程,例如 scanfgetchar )将等到您在处理输入之前按“Enter”键 - 并且“Enter”将作为换行(无法避免)。
但是您可以使用 getch()函数(在 <conio.h> 中定义);这不会回显您输入的键/字符,因此,当您按“Enter”键时,换行符不会在控制台上“反射(reflect)”。但是,您必须手动回显您键入的任何其他字符,并将它们保存到输入缓冲区;然后,您可以使用 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;
}
注意:您可以(应该)向此代码添加更多错误检查(例如检查 scanf 的返回值以确保给出有效整数);但是,我所展示的“模拟”了您的原始代码,但没有回显换行符。

关于c - 如何在输入的同一行上打印输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67106795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com