ungetc(c,stdio);の説明で、読み込んだ文字をストリームに1文字戻す。とあるのですが意味が分かりません。
便利な点の説明で、文字列を分解する際に、判定用の文字を1度読み込んだ後、
もう1度ストリームに戻してから改めて処理できる為、便利なのです。とあるのですが理解できません。
ungetcについて教えてください。
ストリームは分かりますか?
キーボード等から得た文字であってますか?
ちょっと違いますね。
説明が少し難しいのですが、いつでも文字が読み込める状態の入れ物のこと入力ストリームといいます。
そのストリームに対して「何文字くれ」という命令をして文字列を取得することができます。
ungetcはストリームに「1文字返すわ」という関数です。
すでに回答がついていますのでotnさんの回答を参考にしてください。
とするとgetchar()はキーボードから入力された文字を入力ストリームに入れるってことであってますか?
getcharは既定のストリーム(標準入力ストリーム)があってそのストリームから1文字読み取るのだと思います。キーボードからの入力はまず標準入力ストリームに格納されるわけです。
違うかもしれません。
なるほど、理解できました!
stdin についても聞いていいですか?
説明で特に何も指定が無い場合キーボードからの標準入力を受け取ることができる標準ストリームです。とあるのですが
c = getchar()で入力ストリームからとってきてるのでstdinって書くってことですか?
stdinは標準入力ストリームのことだと思いますが、
「入力ストリームからとってきてるのでstdinって書くってことですか? 」
ここの意味が分かりません。
何か例を示してもらえますか?
実際に書いたらどうなるんでしょう?
ungetcの引数の定義があいまいでして勘違いをしていました
1つ目の引数が戻したい文字、2つ目が戻す場所の指定と。
ungetc(c ,stdin); cが戻したい文字で、stdinは標準入力ストリームに戻す。
と理解したのですがあってますか?
使い方としてはあっています。
しかし、取ってきた場所に返さないといけないという決まりはないです。
どこに返すかはプログラムを書く人が決めることなので返す場所があっているかどうかは書いた人にしかわからないです。
回答2件
あなたの回答
tips
プレビュー