重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

文字を取り込むときに、scanfなどでは、Enterきーを押さないと、文字の取り込みができないのですが、もし文字を打ち込んだ瞬間に(Enterキーを押さなくても)取り込める方法がありましたら、おしえてください。よろしくお願いします。

-たとえば-
#include<stdio.h>
    :
    :
scanf("%s",&a);
/*ここでEnterキーを押さないと文字を取り込めない*/

A 回答 (2件)

getcheがつかえると思いますよ。



構文

#include <conio.h>
int getche(void);

解説

キーボードからエコー付きで文字を読み込みます。
getche は,キーボードから 1 文字読み込み,テキストウィンドウにエコーバックします。

戻り値

getche は,キーボードから読み込んだ文字を返します。
    • good
    • 0

環境の指定が無いので答えにくいのですが…。



まず最初に、文字列入力に付いては“ここまで”という指定が必要な為enterによる区切りは必要だと思います。
文字入力(scanf()の"%c"やgetchar())の場合は可能性があります。

UNIX系の場合:
sttyでコンソールをrawモードにしておけばgetchar()でenterなし1文字入力できます。
ある種のUNIX(ネイティブ系ではOK、linuxでは未確認)ではsetbuf(stdin, NULL)を実行する事でgetchar()でenetrなし1文字入力可能です。

MS-DOS及びDOS窓16ビットの場合:
KeyBIOSを使った方が手っ取り早いので通常KeyBIOSを使います。
拡張ライブラリ関数getch()が利用可能なコンパイラならgetch()でもオッケーです。

DOS窓32ビットの場合:
getch()を使います。

Macの場合(MPWシェル):
最近のバージョンは使ったことが無いのですが、昔はsetbuf(stdin, NULL)の後にgetchar()すれば出来ました。

昔のDOS環境にはバッファリング無しの入力として標準エラー入力というものがあったのですがWindows上のDOS環境でサポートされているんでしょう? > 識者の方
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!