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