• 締切済み
  • 暇なときにでも

ストリームって?

プログラミングの超初心者なのですが、現在Cの勉強をしています。1つ分からない言葉があるのですが、「ストリーム」について教えてください。例えば「ファイルストリーム」「標準エラー出力ストリーム」「標準入力ストリーム」などです。この「ストリーム」という動作はどういった動作をさすのか教えていただければ幸いです。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2832
  • ありがとう数60

みんなの回答

  • 回答No.2
  • m_ino
  • ベストアンサー率0% (0/0)

C言語の世界では、プログラムとファイルの間のデータの流れの経路のことをストリームと言います。(C言語辞典より) プログラムでファイルを開くと、ファイルとプログラムはストリームで結ばれて、その 経路をデータが行き来(入出力)されるわけです。逆に言うと、ストリームを介さないと、データの入出力はできません。  プログラムから見ると、データを必要とする場合は、ファイルでは無く、ストリーム からデータをもらいますし、データを出力するときは、ストリームにデータを送る訳です。         --------------------------            プログラム    ← [データ] →   ファイル         --------------------------                     ストリーム(経路)  なお、標準入力、標準出力、標準エラー出力ストリームは、実際はファイルでは無く、キーボードや画面だったりしますが、C言語ではそれらもファイルと同じ様に扱われます。  ・標準入力ストリーム  基本的にキーボードからの入力(入力専用のストリーム)  ・標準出力ストリーム  基本的に画面への出力    (出力専用のストリーム)  ・標準エラー出力ストリーム 基本的に画面への出力  (出力専用のストリーム)    ※ 通常の出力と、エラー出力を区別するために2種類用意されています。    ※ これらのストリームはファイルと違い、プログラムが動作する時点で      開いているので、原則としてファイルオープン、クローズ等は意識し      なくても使用できます。    理解しにくいところがありましたら、すみません。

参考URL:
ANSI C言語辞典

共感・感謝の気持ちを伝えよう!

質問者からの補足

御礼が遅れてしまい申し訳ありません。 たいへんわかりやすい説明をしていただいて、本当にありがとうございます。 さすが関係者はちがう!っていう感じで、よく理解できました。 これからもプログラムについていろいろ質問するかもしれませんが、 そのときはまたよろしくお願いします。

関連するQ&A

  • 改行のことで

    標準入力ストリームでは「改行」は標準ストリームのバッファに入る前 にCRLFから\nへと自動変換されるのでしょうか? それとも標準ストリームのバッファから実引数へ入れる時にCRLFから\nへ変換されるのでしょ うか? (windowsOS、C言語)

  • ストリーム テキスト

    初心者の質問です。よろしくお願いします。 Javaのストリームを勉強しているのですが、FileReaderでテキストファイル(txt)を入力するにはどうすれば良いのでしょうか? Javaファイルは正しく入力できたのですが。 FileReader fr=new FileReader(args[0]);では、問題があるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ストリームについて具体的に

    ストリームは入出力装置へのアクセスのための情報を抽象化した抽象データ型だそうですが(Wikipediaより)、それは具体的にどうなっているのですか?FILE構造体のようなものでしょうか。 ・ストリームにはどんな情報が入っているのですか? ・ストリームはどこに展開されているのですか?メモリでしょうか。 あと、プログラミングは初心者なのでチンプンカンプンな質問をしているかも知れません。その場合は「何か勘違いしてますよ~」と指摘してくださると嬉しいです。回答お待ちしています。

  • 回答No.1
noname#25358
noname#25358

 ストリームという単語そのものは「流れ」という意味で、データの流れを川の流れに例えてあるのです。  たとえば、川に木材を流して下流に届けることを考えてみます。川がストリーム、上流はあなたのプログラム、下流はファイルや標準出力などです。  あなたは、自由自在に木材を川に流すことができますが、川の流れを途中で制御することはできません。また、相手も木材を受け取ることはできますが、同じことが言えるわけです。  このようにただ、垂れ流し的にデータを流すような構造を「ストリーム」と呼びます。  ファイルストリームは相手がファイルになるもの、標準ストリームは相手がコンソール(画面とキーボードを合わせた言い方)です。  また、出力の場合、自分がデータを流すわけですから相手は下流におり、入力の場合は相手が上流にいてあなたは上流からデータを流します。  なお標準エラー出力ストリームとは、エラーを専門に扱い、かつ出力専用の標準ストリームのことです。  説明がわかりにくかったら補足にそう書いていただきたいと思います(^^;゚。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Java ストリームをわかりやすく教えてください

    Javaを独学で学んでいる初心者です。 ストリームの意味がよくわからなく困っています。 参考書には「入出力機能を支えている概念がストリーム」と書いてあるのですが意味が分かりません。 まだまだ勉強不足で知識が至らないので、簡単なたとえ話などで説明していただけると嬉しいです。

    • ベストアンサー
    • Java
  • twitter streamingについて

    twitter streaming apiを使いたいと思い、調べてみたのですが、プログラミング初心者の 私にはさっぱり理解ができませんでした…。 こちら→http://d.hatena.ne.jp/shibason/20090816/1250405491#20090816fn5 を参考にRubyで試してみたのですが、まったく反応がなかったりtimeout errtorと出るなど、 情報を取得することができません。Rubyに関しても触ったばかりで詳しいことはわかっていません。 ですので、Rubyでstreaming apiを扱う方法を詳しく教えて頂けないでしょうか? もしくは、初心者の私でも扱える他の方法があればよろしくお願いします。 最終的にはその情報を使ったflashコンテンツを作りたいと思っています。

    • ベストアンサー
    • Ruby
  • ターミナルに表示された文字をファイルに保存するコマンド

    ターミナルにキータイプして入力した文字や、ターミナルに表示される標準出力、標準エラー出力を全て1つのファイルに保存するようなUNIXのコマンドがあったような気がするのですが、なんだったか教えていただけないでしょうか?

  • リダイレクションで標準入力を変更できない

    入門UNIXシェルプログラミングを読んで 今まで眠らせていたレッドハットのいろんな操作方法を学習しています。 今は第4章リダイレクションによるファイル操作を読み進めています。 >を使って標準出力を変更する方法を学習しました。 また、<を使って標準入力を変更する方法も学習しました。 しかし、本の例のとおりに入力しても、標準入力を変更できませんでした。 $cat xyz abc nnn $ls < xyz aaa abc nnn xyz xyzで指定したabc nnnのリストを表示させたいのに 全てのリストが表示されてしまいます。 つまり、< xyz以降が無視されて、引数なしのlsが実行されてしまいます。 他にも私が知ってるコマンド(echoやcat)でも標準入力が変更できるか試してみたのですが、やはりダメでした。 $ echo < xyz $ cat < xyz abc nnn echoは空行を表示します。 catの場合は、<だけが無視されてcat xyzとして実行されるようです。 どなたか教えてください。 このリダイレクションの使い方は合ってますよね。 どうやれば、標準入力を変更できるのですか。

  • VS2015 FileStreamのエラー

    お世話になります。 VisualStudio2015のFileStreamにおいて次のコードでエラー落ちします。 FileStream outfs = new FileStream(fileName, FileMode.Create); 調査したところFormプロジェクトでは同じコードでも正常に処理されますが、ユニバーサルプロジェクトにおいてFileStream がStreamクラスとして認識され動作するようで困っています。 VSのバグなのか仕様なのか不明ですが、VSのUpdate2を適用しても改善されません。 用途はRaspberryPi2において動作させるものなのでユニバーサルプロジェクトで動作させる必要があります。 WindowsのFormでは正常に動作するためお手上げです。 どなたかヒントをお持ちの方がいましたら回答お願いします。

  • C#のNetWorkStream

    C#で最近、ソケットプログラミングを勉強し始めました。 そこで、気になったのですが、 データを送信するときや、受信するときの方式に、 SENDやRECEIVEで送信する方法と NETWORKSTREAMを使って送信する方法が あることがわかりました。 この二つの方式のメリット、デメリット、また違いについて ネットでいろいろと探してみたのですが、納得のいく 回答がなかなか得られずにいます。 よろしければ、ご教授していただけるとありがたいです。

  • シェルのリダイレクトとパイプについて

    シェルのリダイレクトとパイプについての質問です. リダイレクトでコマンドの標準出力をファイルに指定した後に, パイプを置いて,もう一つコマンドを並べたとき, 後の方のコマンドの標準入力はどうなるのでしょうか? 例えば, ls >outfile |cat ならば, catの標準入力には,何も入ってこないと思うのですが, これを実行すると,lsの結果がoutfileに書き込まれ, 次のプロンプトが表示されます. 普通,catを引数なしで実行すると, EOFが入力されるまで,入力待ちになると思うのですが, こうならないのは,シェルがcatの標準入力にEOFを入力したからだと 考えていいのでしょうか. よろしくお願いします. (質問の意味が分かりにくければご指摘下さい.)

  • 標準入力の際に、、、fgets

    標準入力の際にgetsやscanfは読み込むバイト数を指定できないので危険、 fgetsを使えという話を良く聞きますが、fgetsだと改行まで読み込んで しまいますよね。これで少し困っています。 読み込んだ文字列から'\n'を探して'\0'を代入することはできますが 面倒くさいです。もっと手軽にscanfのように改行を含めずに 標準入力から受け付けるのをfgetsなどではどうやればいいのでしょうか。 よろしくお願いいたします。

  • Windowsでの標準入力の終了の仕方

    Windowsでの標準入力の終了の仕方を教えて下さい。

    • ベストアンサー
    • Java
  • 標準入力について

    Java初心者(初めて3日ほど)の者です。 前は学校でcを半年勉強していました。 キーボードからの標準入力ですが、ネット、参考書を見ると、 BufferedReaderを使うものと、Scannerを使うものを見つけました。 これはcで言うと、 前者はfgetsで1行読み込んでからsscanfで数値を読み込む、 後者はscanfで直接数値を読み込む という風に解釈してよいのでしょうか。 あと、BufferdReaderとScannerではどちらを使った方が良いのでしょうか。 ご回答よろしくお願いします。

専門家に質問してみよう