Не могли бы вы использовать какое-то значение часового в конце буферов, где хранятся сообщения. Это должно быть таким значением, что вы не найдете его нигде в сообщении. В зависимости от типа этих сообщений возможно наличие такого значения: обычно это отрицательное число, если ваши сообщения состоят из натуральных чисел, числа «INF» или «BIG_INT» и т. Д. Затем вы должны обработать ваше сообщение до часовая стоимость. Примерно так:
#include <stdlib.h>
#include <string.h>
#define N 100
#define ENDTAG -999999
void foo( int *arr ){
int i = 0;
while( arr[i] != ENDTAG ){
//do whatever
i++;
}
}
int main( void ){
int *arr = (int *) malloc( sizeof(int) * N );
//fill the array, no matter how.
// ...
//set the sentry value
arr[N-1] = ENDTAG;
foo( arr );
free( arr );
return 0;
}
Это может звучать очень просто, но я действительно использовал нечто подобное не раз. Тем не менее, вы должны быть абсолютно уверены, что будете принимать ограниченные типы сообщений.