如何在输入后在同一行输出结果,即输入一行内容并回车后,或者有没有办法消除输入的内容(语言-c语言)

img


C语言,如何在输入后在同一行输出结果,即输入一行内容并回车后,在同一行输出对应的结果,或者有没有办法消除输入的内容。
如图,我输入身份证号,请问如何在同一行输出其正误和对应生日(即呈现出如图所示的效果)

用conio.h里的getche()函数

#include<conio.h>
#include<stdio.h>
#define ID_LENGTH 18

//根据身份证号前17位生成校验码
char IDcheckcode(char*ID) {
    static const int res[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
    static const char* M = "10X98765432";
    int i, x = 0;
    for (i = 0; i < ID_LENGTH - 1; i++) {
        x += (ID[i] - '0') * res[i];
    }
    x %= 11;
    return M[x];
}

int main() {
    char ID[ID_LENGTH];
    int i, legal ;
    while (1) {
        legal = 1;
        for (i = 0; i < ID_LENGTH; i++) {
            if(i<0)i=0; 
            ID[i] = getche();
            if (ID[i] == 27)return 0;//esc键
            else if (ID[i] == 8)i -= 2; //backspace键
            else if (ID[i] < '0' || ID[i] > '9' && ID[i] != 'x' && ID[i] != 'X')legal = 0;
        }
        if (legal)legal = IDcheckcode(ID) == ID[ID_LENGTH - 1] || ID[ID_LENGTH - 1] == 'x' && IDcheckcode(ID) == 'X';
        if (legal) {
            printf("  correct,出生年月为: %d年%d月%d日\n",
                   (ID[6] - '0') * 1000 + (ID[7] - '0') * 100 + (ID[8] - '0') * 10 + ID[9] - '0',
                   (ID[10] - '0') * 10 + ID[11] - '0',
                   (ID[12] - '0') * 10 + ID[13] - '0');
        } else {
            printf("  wrong\n");
        }
    }
}

img

那你printf的时候只加\n就行,试试吧,望采纳