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)
- Power Shellは、コマンドがオブジェクトです。以前のWindowsのShell、「コマンドプロンプト」が持っていたコマンドと互換性があるように、一部コマンドの読み替え(alias)が定義されています。
- 上のcatは、読み替え。実際は、Get-Contentというオブジェクトのコマンド(コマンドレット command let)が実行されています。
- wcには置き換えがないので失敗。Measure-object(大文字小文字区別なし)というオブジェクトに、引数をつけます。
- Get-Content data | Measure-object -character -line -word とします。
- dateコマンドも、置き換え。実体は、Get-date。
- そこで、オブジェクト指向らしいコマンド実行例は、以下。Get-Dateが返すDateTime型オブジェクトが持つメソッド adddaysを実行。 ( )をつけないと、Get-dateオブジェクトのメソッドになります。
- (Get-date).adddays(3)
- コマンドレット一覧は、Get-Command コマンドレットのヘルプは、 -? を引数にします。
- sortも、Sort-objectにaliasされています。
<実習作業> パイプと、リダイレクトの使い方をマスター (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); }