4

ユーザーが環境変数の値を設定できるシェルのように、ユーザーからのコマンドを受け入れる必要があるプログラムを書いています。私が抱えている問題は、ユーザーが別のコマンドであるEnterキーを押すset var var-valueだけでなく、スペースを入力したことをユーザーが知る必要がある場合です。setユーザーがスペースを押したか、または を使用して入力したかを判断するにはどうすればよいscanf()ですか?

4

4 に答える 4

2

scanf()ユーザーがEnterキーを押すまで戻らないため、ユーザーがEnterキーを押したことがわかります。ユーザーが入力するときにリアルタイムで文字を読み取ろうとしている場合は、scanf()うまくいきません。getchar()getch()またはgetche()関数、またはキーボード入力を読み取るために OS によって提供される関数を使用する必要があります。文字を 1 つずつ配列に読み取り、読み取ったときにスペースとエンター キーをスキャンします。

この質問も参照してください。

于 2013-09-24T18:48:48.737 に答える
1

ctype.h のisspace()関数で確認できます

strchr()を使用して、入力が '\n' またはスペースで構成されているかどうかを調べる別の方法

if(strchr(input,'\n')==NULL && strchr(input,' ')==NULL)
{
//do something
}  

編集

scanf() は、空白文字が出現するまで入力を読み取ります。空白の後は入力を無視します。

MAXLENGTH 未満の長さの入力を入力する場合は、scanf() の代わりにfgets()を使用し、 '\n'Null 文字の前に留まります

null 文字に置き換えます

char input[MAXLENGTH+1];  

fgets(input,sizeof(input),stdin);

if(input[strlen(input)-1]=='\n')     
input[strlen(input)-1]='\0'; 
于 2013-09-24T18:48:29.950 に答える
1

fgets代わりに使用しますscanf

于 2013-09-24T18:50:21.843 に答える