どちらも、エラーメッセージのとおりです。
E0167 型 "int *" の引数は型 "char *" のパラメーターと互換性がありません
scanf("%dn", n);
の行に対するエラーです。変数を入力させるためにはポインタが必要です。
E0513 型 "const char *" の値を型 "char" のエンティティに割り当てることはできません
moji[7] = "12haj4ha";
の行に対するエラーです。文字数も足りませんし、宣言してからコピーするくらいならchar moji[] = "12haj4ha";
で済ませておくのが楽かと思います。
ということで、「文字列と数字用のは相性が悪い」ということとはなんの関係もないエラーです。