Статический массив в Си/Си++ имеет определённые особенности. Он не может иметь неопределённого размера. У него нет функции копирования и как следствие передаётся в функцию только указатель на этот массив.
Синтаксис void k(char s[])
тихо компилятором заменяется на указатель void k(char * s)
.
Ошибка присваивания у вас char a[]=c1;
во первых в том, что вы массиву с неопределёнными размерами присваиваете указатель, а во вторых как я и говорил, у него нет функции копирования. Копирование надо делать функцией strncpy
или простым циклом если тип не char
и не забывать выставлять нужный размер.
strncpy ( a , c1 , 12 ) ;
или
char a [ 12 ] ;
int i = 0 ;
do {
a [ i ] = c1 [ i ] ;
++ i ;
} while ( i < 12 and c1 [ i - 1 ] != '\00' ) ;