So wie die Struktur jetzt definiert ist, kommst du nicht drumrum, ein
temporäres Array zu erzeugen, wo du die gewünschten Elemente manuell
reinkopierst.
Wenn du die Reihenfolge in der struct zu a,b,d,e,c ändern kannst,
könntest du direkt die struct anstelle des Arrays übergeben (wobei c von
der Funktion ignoriert wird). (Vorausgesetzt das Alignment stimmt,
worauf ich mich nicht unbedingt verlassen würde)
Die elegante Lösung mit sauberem C-Code wäre ansonsten immer manuelles
Kopieren (dank Optimizer ist das immer noch deutlich schneller als die
Zeit die du sonst mit Fehlersuche verbringst) oder, falls durch die Art
der Funktionsparameter sinnvoll, die Funktion umschreiben dass sie
direkt die struct annimmt.