Обработка входящих данных по различным шинам.

Решил разбавить форум разнообразием данных. Это кусок кода способный пережовывать входящие данные по фильтрам где с символа $ по символ * передается условный адрес устройства, а с символа * по # передаются параметры переданного адреса.
Код имеет демонстрациоенное представление.
PS. Написал что бы не потерялся. И вдруг поможет кому то еще.
Код имеет демонстрациоенное представление.
- Код: Выделить всё
#include<stdio.h>
#include<stdlib.h>
int main()
{
/*для демонстрации работы*/
char fb[]="bufer$12*-21.12#$21*22.15#$13*-21#$23*1#\0";
/*для демонстрации работы*/
char zice=sizeof(fb);
char addres[zice],sis[zice];
int sl=0,a=0;
for(int sens=0;sens<zice;sens++)
{if('$'==fb[sens]){sl++;}}//считаем количество входящих параметров
while(0!=sl--){
for(int sa=0;sa<zice;sa++)
{addres[sa]=0;sis[sa]=0;} //очистка буферов
int sw=0,neo=0;
if('*'==fb[a]||'#'==fb[a])a++;
for(a;(a<zice);a++){
if('#'==fb[a])break;
if(neo==1){addres[sw]=fb[a];sw++;}
if(neo==2){sis[sw]=fb[a];sw++;}
if('$'==fb[a]){sw=0;neo=1;}
if('*'==fb[a]){sw=0;neo=2;}
}
printf("\nтермометр адрес %d температура %+.2f°C",atoi(addres),atof(sis));
}
return 0;
}
PS. Написал что бы не потерялся. И вдруг поможет кому то еще.