6

ENTER を押した後、カーソルを現在の行に保持する方法があるかどうかを尋ねたいです!!

例えば ​​...

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

    if(d%2)printf(" is a Odd number\n");
    else printf(" is a Even number\n");
    return 0;
}

出力例:

Enter a number : 10
 is a Even number

...しかし、私が必要とするのはそのようなものです:

Enter a number : 10 is a Even number 

ユーザーが入力した数字の横に「は偶数」(または「は奇数」)を入れたい

4

5 に答える 5

1

簡単な答えは「できません」です。この動作を制御したり、最後に Enter キーを押さずにデータを読み取ったりする標準 C++ 関数はありません (実際、Enter キーを押すまでデータは実際には「入力」されていないため、プログラムはデータを認識しません)。 .

「curses」ライブラリやシステム依存コードなどの追加ライブラリなどの非標準機能を使用できますが、その場合、文字を一度に 1 つずつ読み取り、作成したコードを使用してそれらをマージするコードを作成する必要があります。 .

「出力で入力を繰り返す」を使用し、次のようにすることをお勧めします。

printf("%d is", d);
if (d%2)
    printf("an odd number\n");
else
    printf("an even number\n");
于 2013-05-29T12:48:09.933 に答える
1

vt100 スタイルの端末を使用している場合、このトリックが役立つことがあります: カーソルの移動。

\033ESC、ESC + [ + Aカーソル上、ESC + [ + Cカーソル右

int main()
{
    int d=0;
    printf("Enter a number : ");
    fflush(stdout);
    scanf("%d",&d);
    printf("\033[A\033[18C%d is a an %s number\n", d, d%2 ? "odd" : "even");
    return 0;
}
于 2013-05-29T13:12:02.197 に答える
1

raw キーボード モードを設定し、canonical モードを無効にします。これは、Linuxが端末にパスワード文字を表示しないように管理する方法です。

Termio 構造体は、ググるべきものです。

1 つのリンクは次のとおりです。

http://asm.sourceforge.net/articles/rawkb.html

アセンブリの定数は、syscall ioctl でも利用できます。

于 2013-05-29T12:53:26.000 に答える
0

printfandではありません... andscanfで試しましたか?getc()ungetc(char)

または、printf("%c", (char)8);私の記憶が正しければ試してみてください。それはバックスペースです

それ以外の場合は、おそらく ncurses などの出力ライブラリを使用する必要があります

于 2013-05-29T12:44:38.223 に答える