1-10
これ、バックスペースの入力ってどうやってテストするんだろと思ったけど、
echoで出力した文字列をパイプでつないでやって解決。
#include <stdio.h> /* * タブを\tに、バックスペースを\bに、バックスラッシュを\\に置き換え、 * 入力を出力に複写する **/ main(){ // printf("%d,%d,%d",'\t','\b','\\'); // -> 9,8,92 int c; while((c = getchar() ) != EOF){ if (c == '\t' ){ putchar('\\'); putchar('t'); }else if (c == '\b' ){ putchar('\\'); putchar('b'); }else if (c == '\\'){ putchar('\\'); putchar('\\'); }else{ putchar(c); } } exit(0); }
:!echo '1\t23\b\' 1 2\ :!echo '1\t23\b\' | ./1-10 1\t23\b\\
上で、\tがタブ表記されていることと、\bがバックスペースになって3が表示されていないことがわかる。
それをパイプで標準出力から作成したプログラムに流し込んで、テストを実行。
確認OKなはず。