博士「ここをチェックじゃ」

さて、今日の最後、標準入力と標準出力についてじゃ。
標準入力とは通常キーボードからで、標準出力は通常はディスプレイの事なんじゃ。

関数の覚え方

  • get・・・入力(読み込み)
  • put・・・出力(書き込み)
  • 先頭にfが
    ・・・ない:標準入出力から
    ・・・ある:ファイルから
  • 最後がc・・・1文字
  • 最後がs・・・文字列

入力(読み込み)

標準入力(通常キーボード)から1文字を入力
get(void)
ファイルから1文字を人力
fgetc(ファイルポインタ)
getc(ファイルポインタ)
標準入力から1行(文字列)を入力
gets( s)・・・文字列 sに入力
ファイルから1行(文字列)を入力
fgets(テキストバッファ,256,ファイルポインタ)

出力(書き込み)

標準出力(通常ディスプレイ)へ1文字を出力
put(a)
ファイルへ1文字を出力
fputc(a,ファイルポインタ)
putc(a,ファイルポインタ)
標準出力に1行(文字列)を出力
puts(テキストバッファ)
ファイルに1行(文字列)を出力
fguts(テキストバッファ,ファイルポインタ)

標準入力と標準出力専用のファイルポインタ

博士「ここをチェックじゃ」

キーボードやディスプレイもファイルと考える考え方があるんじゃ。
その上、それ専用のファイルポインタが既に用意されておるんじゃ。

stdin
標準入力(通常はキーボード)
stdout
標準出力(通常はディスプレイ)
stderr
エラー出力(通常はディスプレイ)

博士「Good!」

stdinとstdoutは、ファイルを開いたり閉じたりしなくても使えるんじゃ。
わかったかの?


ぷうさん「(^^♪」

はいはーい。

標準入出力を使ったプログラム

まあいろいろあるが、よく使われるのは「fgets(入力)とfputs,fprintf(出力)じゃな。
一つ、例をあげておくかの。

#include <stdio.h>
main()
{
   char text[256];
   char *p;

   puts("*** input ");
   //↑printf("*** input\n");と同じ
   p=fgets(text,256,stdin);
   //↑gets(text)と同じ

   puts("*** output\n",stdout);
   //↑printf("*** output\n");と同じ
   while (*p!='\0') {
      fputc(*(p++),stdout);
      //↑put char(*(p++));と同じ
   }
}

実行結果

*** input
ABCDEFG
*** output
ABCDEFG

補足説明

博士

分かったかの?
ちょっと詳しく説明しようかの。








p=fgets(text,256,stdin);
stdin(キーボード)から入力された文字列を配列textへ読み込み、textを返す。
その先頭アドレスをポインタpに記憶。
fputc(*(p++),stdout);
stdout(ディスプレイ)というファイルにポインタpが参照できる文字を1文字ずつ出力していく。
ポインタpのアドレスは1つずつずれる。
博士「ここをチェックじゃ」

とまあ、こんなもんでよいかのう?
(悪いと言っても、うまく説明できないんじゃが…。)

ファイル処理まとめ

博士「Good!」

それでは、ファイル処理のまとめして終わりじゃ!


ぷうさん「(^^♪」

はーい☆
(今日は終わるのなんか早くない!?やったね♪)

値の読み込み

scanf(“%d”,&変数名)

ファイルの読み込み、書き込み

  1. 読み込み時のファイルオープン

    if ( (入力ファイルポインタ=fopen(入力ファイル名,"r"))==NULL) {
       printf(" 入力ファイル open error/n"); exit(1);
    }
  2. 書き込み時のファイルオープン

    if ( (出力ファイルポインタ=fopen(出力ファイル名,"r"))==NULL) {
       printf(" 出力ファイル open error/n"); exit(1);
    }
  3. 読み込み1

    if ( fgets(テキストバッファ,256,,入力ファイルポインタ)!=NULL) {
       printf(" %s",テキストバッファ);
    }
  4. 書き込み1

    fputs(テキストバッファ,出力ファイルポインタ)
  5. 読み込み2

    fscanf(ファイルポインタ,"%d %s",配列要素,配列名)
  6. 書き込み2

    fprintf(ファイルポインタ,"%d %s",配列要素,配列名)
  7. 前もって宣言

    FILE *ファイルポインタ
    char テキストバッファ[256],ファイル名[ ]
  8. ファイルを閉じる

    fclose(ファイルポインタ)

博士「(^^♪」

標準入出力は今やったところじゃからよいの。


ぷうさん

まあ・・・・でしょうね・・・


博士

......


困った顔のぷうさん

......

五日目 ファイル処理について 目次

四日目へ

ぷうさんの七日間戦争 五日目

六日目へ