ありがとうございました!>>699さん
もう一つよろしいですか?
なんとなくわかるんですが、
char str[][32];
char *p;
として、多重配列になった場合
p = (char *)str;
と、キャストしないといけないのはなぜですか?