ここのリンクには、以下の文字列を格納したファイルがある。各文字列は、画像ファイルの名前であるが、次のように分割して情報をとりだすことができる:最初の2文字はドライバーナンバーである。2文字固定であることを前提に文字列による数値をintに計算するプログラムを作る必要がある。4文字目からピリオドの手前までが選手の名前である。アンダーバーはスペースに変換する必要がある。
01_Fernando_Alonso.pgm 02_Lewis_Hamilton.pgm 03_Giancarlo_Fisichella.pgm 04_Heikki_Kovalainen.pgm 05_Felipe_Massa.pgm 06_Kimi_Raikkonen.pgm 07_Jenson_Button.pgm 08_Rubens_Barrichello.pgm 09_Nick_Heidfeld.pgm 10_Robert_Kubica.pgm 11_Ralf_Schumacher.pgm 12_Jarno_Trulli.pgm 14_David_Coulthard.pgm 15_Mark_Webber.pgm 16_Nico_Rosberg.pgm 17_Alexander_Wurz.pgm 18_Vitantorio_Liuzzi.pgm 19_Scott_Speed.pgm 20_Adrian_Sutil.pgm 21_Christijan_Albers.pgm 22_Takuma_Sato.pgm 23_Anthony_Davidson.pgm |
ファイル名リストを標準入力から入力し、ドライバーナンバーと選手名を抽出して、タブ区切テキストとして標準出力へ出力するプログラム prac0401.c を作成せよ。このプログラムには、1行の文字列から、ドライバーナンバーと選手名を抽出する関数 split_number_name を用いることとする。
split_number_name の関数は次の仕様を満たすものとする。
実行の様子は次のとおりである。数字と名前の間にはタブが1文字入っている。
# ./prac0401 < name_list.txt 1 Fernando Alonso 2 Lewis Hamilton 3 Giancarlo Fisichella - - - 23 Anthony Davidson #
以前の課題で作成した namecard.h を拡張しよう。namecard.h では既に name と age を格納する構造体を定義している。
以前に作成した prac0101.c を用いて次の動作の得られることを確認せよ。
# ./prac0401 < name_list.txt | ./prac0101 1 Fernando Alonso(0)