ляпов вроде как не видно. только (у мну там раньше в рассуждениях тоже) размер массива должен быть половинкой (если только 2 части) всего двумерного.
Взгляни на вариант с указателями
unsigned char * foo ( unsigned char * ptr, int len){
if ( NULL == ptr) return NULL;
while(1){
if(!len) return NULL;
if(*ptr == 0x20) return ptr;
ptr += 1;
len -= 1;
}
}
#define BUF_SIZE 128
unsigned char mas [2][BUF_SIZE];
unsigned char Read_Layer;
void main(void){
unsigned char last_position = 0;
unsigned char * ptr;
unsigned char * tmp_ptr;
Read_Layer = 0;
ptr = &mas[Read_Layer][0];
tmp_ptr = foo( &mas[Read_Layer][0], BUF_SIZE - last_position );
if( NULL != tmp_ptr ){
ptr = tmp_ptr - ptr;
}
}