Sto scrivendo una funzione alla quale devono essere passati come argomenti una struttura ed un intero e deve restituire una struttura

l'intera struttura rappresenta un numero binario

la funzione fa si che la struttura ritornata differisca dalla prima solo per un dato, un puntatore a char che contiene una stringa rappresentante un numero binario, il modulo della struttura per esser precisi

l'effetto è quello di ridimensionare il modulo di un numero binario alla grandezza passata come argomento

il compilatore dice
no match for 'operator[]' in 'binary[initsize]'
no match for 'operator[]' in 'binario[size]'

codice:
bin resize(bin binary,int size)
{
bin binario;
int initsize;
initsize=modsize(binary);
binario.chk=binary.chk;
binario.sys=binary.sys;
binario.mod=(char*)calloc(size+1,sizeof(char));
binario.mod[size]='\0';
--size;
for(--initsize;initsize>0 || initsize==0;initsize--)
   {
   binario.mod[size]=binary[initsize];
   --size;
   }
for(size;size>0 || size==0;size--)
binario[size]='0';
return binario;
}
la modsize restituisce la lunghezza del modulo memorizzato nella struttura come puntatore a char

dove ho sbagliato?