За ссылку про кольцевой буфер спасибо. А задача уже решена. Вот решение кому интересно:
#include <stdlib.h> #include <stdio.h> #include <string.h> int main (int argc, char ** argv) { char buf[] = "32321\n\r32322\n\r32323\n\r", *pb = NULL; // здесь полагаем, что buf мы прочитали из COM порта pb = buf; for(;;) { // проверяем есть ли начало escape последовательности char *ptr = strstr(pb, "\n\r"); if (!ptr) break; // если да, то завершаем найденный указатель на \0 // чтобы функция atoi() смогла отработать *ptr = '\0'; int a = atoi(pb); // теперь в a бинарное представление строки // выводим в консоль прочитанное число if (a) printf("I've just read %d!\n", a); // смещаемся на начало новой строки pb = ptr + 1; } return 0; }
только это вариант для статического буфера buf, а у меня он меняется, так как данные идут непрерывно, но думаю теперь это не проблема, главное концепция ясна.
|