問題3 - 文字列の分割

C 言語の文字列は, 文字コード 0 が終端の記号である. したがって, 文字列の途中の文字を「終端」(文字コード0) に書き換えると, 先頭から見た文字列はそこで終了となる. さらに, 今書き換えた文字の次の文字から先を見ると, 以前の文字列の後につづく部分が文字列として見えるようになる.

たとえば, "abc/def" という文字配列はメモリ中では

「a」 「b」 「c」 「/」 「d」 「e」 「f」 「終端」
となっているが, そのうちの「/」の文字を「終端」に置き換えると
「a」 「b」 「c」 「終端」 「d」 「e」 「f」 「終端」
となる. ここで, 先頭からみると, これは "abc" という文字配列になっており, (先頭 + 4) からみると, "def" という文字配列になっている. つまり, 「/」の文字を「終端」に置き換えることで, 「/」でくぎられた一つの文字列を二つの文字列に分割したことになる.

入力として, 0個以上の「/」を含む文字列を受け取り, それを上記の方法で分解して複数の文字列とし, それらを番号をつけて printf("%d %s\n",..) で出力するプログラムを作成する.

レベル 1

分解してできた文字列を, 番号の昇順(0,1,2,...)に出力するプログラム. 動作例はこんな感じ:
word? abc/def
0 abc
1 def

レベル 2

分解してできた文字列を, 番号の逆順(...,2,1,0)に出力するプログラム. 動作例はこんな感じ:
word? abc/def
1 def
0 abc

prev index