
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
演算子 >> で char を読み込む仕様は、
* ストリームバッファから1文字取り出し、仮引数cに書き込む。
* 入力がなされなかった場合、setstate(failbit)を呼び出す。
ですので、
入力がなされなかった場合に \0 を書き込むには
cin >> c;
if (cin.fail()) c = '\0';
参考)
https://cpprefjp.github.io/reference/istream/bas …
No.5
- 回答日時:
「標準入力の<<を使って」と書いているのにプログラムでは「cin >> c」となっているのが謎だ.
キーボード (や設定) によっては
C-@
C-v C-@
などでヌル文字が入ることがある.
なお余談だが NULL と '\0' は全く違うものなので良い子は混同してはならない.
No.4
- 回答日時:
> iMacでは、Ctrl+DでNULLが入るようです。
それはおそらく勘違いですね。
Ctrl-Dだと、長さゼロの入力になります。ファイルで言うと空ファイル(長さゼロのファイル)をリダイレクトしたような。
c = 'A';
cin >> c;
cout << c;
で、cinに対して Ctrl-D を押すと A が表示されると思います。
つまり、c にもともと \0 が入っていた状況だったので、Ctrl-Dで \0 が入ったと勘違いしたのでしょう。
No.3
- 回答日時:
MacOS,Luinux等のUnix(系)OSの端末では、 Ctrl-D は EOF を意味します。
つまり、標準入力はその直前で終り、というとことです。
\0が入力されたわけではありません。
Windows では Ctrl-Zに相当します。
元のプログラムを確認してください。
求められているのは、本当に「\0を入力すること」ですか?
「入力を終わらせる=EOFを入力すること」ではないですか?
No.2
- 回答日時:
コードでどう書くかというより、キーボードでどうやってNULを入力するかと言うことになるかと思います。
が、WindowsでもLinuxでも Ctrl-@ を入力しても認識されないですね。
キーボードからNULを入れるのは無理だと思うので、
printf '\0' | ./program
のようにパイプで送り込むか、特定の文字が入ったらNULと置き換えるように書いて、その文字を入力するか。
if(c=='!') c='\0';
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力値が1以下、かつ数字以外の...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
4桁の数字以外を入力したらエラ...
-
*をユーザーが入力した数字の数...
-
プログラミングの問題です 「金...
-
ワードで文字を入力する時の変...
-
charを使わずに4桁の数字以外を...
-
プログラミング初心者です。 Py...
-
C言語 逆ピラミッドの作り方
-
電卓の小数点
-
scanfが2回使えない・・・?;
-
Eclipseでコマンドラインを入力...
-
VB カウントダウンタイマーの作...
-
scanf が無視されます
-
特定の文字が入力されるまで・・・
-
C言語でgetchar();が上手く使え...
-
Linuxプログラミングで、キーボ...
-
getchar()について 教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
scanfが2回使えない・・・?;
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
プログラミングの問題です 「金...
-
if文の条件にscanf関数を使うと…?
-
C言語でgetchar();が上手く使え...
-
UWSCで変数をキー入力
-
4桁の数字以外を入力したらエラ...
-
EDITコントロールで入力できる...
-
C言語でつるかめ算をするにはど...
-
Userformの入力順序をタブオー...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報
char c;
if (cin >> c) {
...
}
で、標準入力(キーボード)から変数cにNULLを入れたい。
iMacでは、Ctrl+DでNULLが入るようです。