PROG 7.5 パイプ、リダイレクトの基本

<準備> 

A. PROG 1.1のおうむ返しプログラムを準備しなさい。実行せよ
(実行ファイルを0101.exeとします。
 powershellのgccなら、gcc -o 0101 0101.c
 なお、gcc 0101.cと実行ファイル名を指定しないと、a.exeというファイルになります)

実行は ./0101 あるいは ./0101.exe)

B. 以下のファイル dataを作成しなさい。プログラムと同じディレクトリに作成すること
(name gender ageの値を並べています。本来、キーボードから入力するデータです)

hanyu m 19
kasai m 41
takeuchi f 30
onodera f 25

C. powershellのcatコマンドで、ファイルのデータを表示しよう。

cat data
hanyu m 19
kasai m 41
takeuchi f 30
onodera f 25

(UNIXコマンドも、cat data。コマンドプロンプトでは、type data)


コメント (2021 PowerShell)

<実習作業> パイプと、リダイレクトの使い方をマスター (powershellかUNIXを)

1. 入出力をパイプでつなぐ  |の使い方
cat data | 0101              
Please input | name gender age
name = hanyu
gender = m
age = 19

name = kasai
gender = m
age = 41

name = takeuchi
gender = f
age = 30

name = onodera
gender = f
age = 25

END

 | をパイプという 左のコマンドの(標準出力)出力を、右のコマンドの入力へ。出力の終わりは、EOFとなる。
2. ファイルdata1にリダイレクトする  > の使い方
cat data | 0101 > data1
cat data1

(上の標準出力への出力が、ファイルに書き込まれる)


3. (POWERSHELLでは不可) ファイルをコマンドにリダイレクト (あまり使わないけれども、いざというときに) < の使い方

0101 < data

(1と同じ出力になる。1は、cat コマンドの出力。今回は、ファイルdataそのもの)



解答例 (例題0101のプログラム。例題0101のページも参照のこと)
#include <stdio.h>

int main (void) {
   char name[31];
   char gender;
   int age;

   printf("Please input | name gender age\n");

   while (scanf("%s %c %d", name, &gender, &age) != EOF) { /* くりかえし入力に関する定番条件文 学習時のみの定番 */
   /* プリント文を 書け */

     printf ("name = %s \n gender = %c \n age = %d \n\n", name, gender, age );
 
   }

   printf ("END \n");

   return(0);
}