ミス
p=(char)malloc(m*sizeof(char));


訂正

p=(char *)malloc(m*sizeof(char));