ソフトウェア設計及び演習2017

入出力

入出力

バッファを用いた文字列の読みだし書き込み

 ssize_t read(int ファイル識別子,char * バッファ, int 読みだし長)

ファイル識別子で指定する入力(装置)からバイト列を読み出す. 実際に読んだバイト数を返す.

 ssize_t write(int ファイル識別子,char * バッファ, int 書き込み長)

ファイル識別子で指定する出力(装置)へバイト列を書き出す. 実際に書いたバイト数を返す.

サンプルプログラム

  • 標準入力から80文字以下の文字列を読み込んで,
  • 読み込んだ文字列を,標準出力へ出力し,標準エラーへも出力する
  • 標準出力には、先頭に stdout> , 標準エラーには、先頭に stderr> を付ける.
# include <stdio.h>
# include <fcntl.h>
# include <string.h>

# define SINPUT 0
# define SOUTPUT 1
# define SERROR 2

# define MaxMessageLength 80

int main()
{
  char *Message, MessageBox[MaxMessageLength];
  int Bytes;

  Message = MessageBox;

  Bytes = read(SINPUT, Message, MaxMessageLength);
  MessageBox[Bytes] = 0;

  write(SOUTPUT, "stdout>> " , 9);
  write(SOUTPUT, Message, strlen(Message));
  write(SERROR, "stderr>> " , 9);
  write(SERROR, Message, strlen(Message));

  exit(0);

}

コンパイルして,最初は「標準入力をキーボード」,「標準出力とエラー出力は端末画面」として動かしてみよう.

次は,標準入力と出力をファイルに(するようにプログラムを変更)してやってみよう.


最終更新日:2017/04/03 09:14:19