TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜44時限目〜 ストリームの仕組みについて・・・

〜目次〜

 

 

 

ストリームの仕組みついて

今までの時限で入力したプログラムの中には、

画面に文字や数値を出力したり、

キーボードから入力する処理などがありました。

入出力は画面やキーボード、それにファイルに対して行われます。

これらの装置は一見異なるものですが、

C言語では様々な装置に対する、

入出力を統一的な方法で扱うことができます。

この入出力機能を支える概念のことを、

ストリーム(stream)

と呼びます。

ストリームは様々な異なる装置を、

同じように扱うための抽象的な仕組みです。

これから様々な入出力を行うプログラムを作成しています。

 

書式付きの入出力を行う

C言語の標準ライブラリ関数には、

入出力を行うための関数が多く添付されています。

これまでに使っていた、

printf( )関数や、scanf( )関数

についてもこの関数のうちの一つです。

これらの標準的な入出力関数は、

stdio.h

というファイルをインクルードすることで使えます。

まず、printf( )関数とscanf( )関数を使ったコードについて、

復習をしていきます。

printf( )関数は標準出力に文字列を出力する関数でした。

そして、

scanf( )関数は標準入力からの入力を変数などに読み込む関数です。

以下のコードをみてください。

sample101.c

f:id:YuyaTerayama:20180915221414p:plainーsample101の実行画面ー

整数値を入力してください。

7

小数値を入力してください。

12.3

文字列を入力してください。

Hello

入力した整数値は7です。

入力した小数値は12.300000です。

入力した文字列はHelloです。

sample101で使った、2つの関数は、

標準出力・入力に対して、

一定の書式を付けて入出力を行う関数です。

変換仕様を使って、2番目以降の引数をどのような書式で、

入出力するのか指定することになっています。

特に、scanf( )関数は2番目以降の引数として、

ポインタを渡す

ということになっています。

このため、scanf( )関数を使うときには、

入力を受け取る変数名の前に&演算子を付けてきたのです。

また、

文字列を入力する場合には、

配列名に&演算子を付けていないことに注目してください。

配列名はそれ自体が先頭要素をさすポインタの役割を持っているので、

&演算子を記述する必要がなかったのです。

変換仕様には、いままで使ってきた以外にも、

たくさんの種類があります。

 

出力幅を指定する

はじめに、

出力幅を指定する

変換仕様を使ってみます。

出力する文字や数値などの間隔を指定することができます。

実際に以下のコードを入力してみてください。

sample102.c

f:id:YuyaTerayama:20180915222337p:plainーsample102の実行画面ー

  1  2  3  4  5  6  7  8  9 10

sample102では1から10までの数値を繰り返し出力しています。

実行結果を見るとわかる通り、

3字幅で出力が行われています。

変換仕様に数値を指定することで、

出力幅を指定することができます。

尚、出力する値が指定幅よりも大きいケタ数になった場合は、

出力幅が無視され、

そのケタ数で出力されます。

実際に文字幅を自分で変えて実行してみてください。

尚、出力の幅の中では、

出力を右寄せまたは左寄せにすることができます。

何も指定しないか、+をつけると右寄せで出力されます。

-をつけることで、左寄せにすることができます。

 

精度を指定する

printf( )関数では数値を出力する際には、

出力される

小数点以下のケタ数(精度)を指定する

ことができます。

このためには、ピリオド(.)を付けた数値を変換仕様として指定します。

実際にコードを入力してみます。

sample103.c

f:id:YuyaTerayama:20180915223944p:plainーsample103の実行画面ー

小数値を入力してください。

3.141592000

小数点以下3ケタで出力すると3.142です。

浮動小数点数は通常6ケタで表示されるので、

ケタ数を指定することで、

出力を読みやすくすることができます。

 

変換仕様を組み合わせる

いままでの変換仕様を組み合わせて、

複雑な書式指定をすることができます。

例えば、

浮動小数点数を左寄せにして、3字幅・小数点以下を3ケタ」

という指定をすることができます。

%±出力幅.精度 書式

このようにして組み合わせることが可能です。

 

〜END〜