繁体   English   中英

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

[英]How to print output on the same line as input?

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

这是我的代码

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

发生了什么: 发生了什么

     Enter number: 23
     You entered 23

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

     Enter number: 23 , You entered 23

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

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

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

#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的返回值以确保给出有效的 integer ); 但是,我所展示的内容“模拟”了您的原始代码,但没有回显换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM