文字列処理で詰まったこと

詰まってた問題が解決したのでメモ.

最近,J1のときにやった問題を解き直してるんだけど,こういう問題にあたった.
 
以下に示す顔を表示するプログラムを作成せよ.ただし,配列は14×14とし,配列の値が1のとき■を出力し,0のとき□を出力することで絵を作成せよ.
□□□□■■■■■■□□□□
□□□■□□□□□□■□□□
□□■□□□□□□□□■□□
□■□□□□□□□□□□■□
□■□■■■□□■■■□■□
■□□□□□□□□□□□□■
■□□□■□□□□■□□□■
■□□□□□□□□□□□□■
■□□■■■■■■■■□□■
□■□□■□□□□■□□■□
□■■□□■■■■□□□■□
□□■□□□□□□□□■□□
□□□■□□□□□□■□□□
□□□□■■■■■■□□□□
 
要するに配列で0,1を保存してそれを使って顔を描けって感じ.
これを0,1で配列に入れるのに,□■で書かれた顔を0,1に変換するプログラムをささっと書こうと思った.
 
作ろうとしたプログラム
入力
□□□□■■■■■■□□□□
□□□■□□□□□□■□□□
□□■□□□□□□□□■□□
□■□□□□□□□□□□■□
□■□■■■□□■■■□■□
■□□□□□□□□□□□□■
■□□□■□□□□■□□□■
■□□□□□□□□□□□□■
■□□■■■■■■■■□□■
□■□□■□□□□■□□■□
□■■□□■■■■□□□■□
□□■□□□□□□□□■□□
□□□■□□□□□□■□□□
□□□□■■■■■■□□□□
出力
0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,…..
 
最初にgetchar()で一文字ずつ取得して処理しようとした.でも■□はUnicodeで多バイト文字だから動かなかった.
次に,getwchar()を使おうとした.でもワイド文字じゃダメだった.
その次は,文字列で処理しようとしたけど,strcmp()とかstrcpy()がなんかおかしい.
結果,こんなんになった.
 

 
□が何バイトになるかわからないから,strlen()でバイト数をとってからscanf()で一文字分取得する感じ.もっと簡単な方法はなかったのか……
まあ,これでうごいたしこれでいいかな,って.
 
おまけ
実はCで詰まったときにJavaでもつくった.
 

 
ロジックが同じだし,同じ動作をする.
でも,Javaでしか作れないっていうのは悔しかったからCでもつくった.
 
愚痴
CでもJavaでもなんでも,文字コードを意識しなきゃいけないのとってもめんどい.
めんどいからUnicode以外は世界から消えて欲しい…
あとなんでjava.util.ScannerにnextChar()みたいなのないの