>>319
? : の条件演算子は真のときと偽のときとで式の型が一致している必要がある。
なぜならを条件演算子は演算子だから結果を出す必要があるため。
たとえばこんなこともできる。
int n;
n = test < 10 ? 0 : 10;
sprintfはint、strcpyはchar *を返すので型を合わせようにも変換できないのでエラーになる。