char *str;
のときに
str = (char *)malloc(100);
ってやる意味が分かりません。
str = malloc(100)
これじゃだめですか?

で、freeのほうも
free((char *)str)
にしなきゃならないとか
free(str)
でいいとか・・・
どなたかこの意味を教えていただけないでしょうか?