Beh, fai un po' di debug, allora...
Prova a infilare una stampa a video nella funzione, tipo (se non ricordo male):
printf ("%d %d", a[0], b[0])
e vedi cosa ti esce.

Ricordo che anch'io in C ci perdevo le ore a far funzionare il passaggio dei parametri, soprattutto con le stringhe (char*), sbagliando le cose piu' idiote (e ovviamente, nel cercare di correggere mi concentravo sulle cose meno banali, non trovando mai l'errore!!!)